Sådan eksporteres postkasser mindre end den samlede størrelse

Vi ønsker at få postkasser i Exchange Server, der er i samlet størrelse mindre end det angivne beløb. Dette er en glimrende måde, før vi migrerer postkasserne til en anden database. I denne artikel lærer du, hvordan du eksporterer postkasser mindre end den samlede størrelse.

Eksporter postkasser, der er mindre end PowerShell-scriptets samlede størrelse

Export-MailboxesTotalSize.ps1 får alle postkasser, der er mindre end den samlede sumstørrelse, du definerer i scriptet. For hver postkasse indsamler den følgende oplysninger:

  1. Vist navn
  2. Samlet størrelse GB
  3. BrugerPrincipalName
  4. PrimærSMTP-adresse
  5. SMTPAlias-adresser

Note:Hvis du definerer en samlet størrelse på 100 GB i scriptet og to postkasser er 50 GB store, vil det kun vise disse to postkasser. Det skyldes, at opsummering af begge postkasser er i alt 100 GB.

Forbered Export-MailboxesTotalSize PowerShell-script

Opret to mapper på Exchange Server(C:)køre:

  • Temp
  • Scripts

Download og placer Export-MailboxesTotalSize.ps1 PowerShell-script iC:scriptsfolder. Scriptet eksporterer CSV-filen tilC:tempfolder.

Sørg for, at filen er ophævet blokering for at forhindre fejl, når du kører scriptet. Læs mere i artiklen Ikke digitalt signeret fejl ved kørsel af PowerShell-script.

RELATERET:Bloker login fra delte postkasser

En anden mulighed er at kopiere og indsætte koden nedenfor i Notesblok. Giv den navnetExport-MailboxesTotalSize.ps1og placer den iC:scriptsfolder.

<#
    .SYNOPSIS
    Export-MailboxesTotalSize.ps1

    .DESCRIPTION
    Export mailboxes that are less than the defined total size.

    .LINK
    www.alitajran.com/export-mailboxes-total-size-less-than/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 10/22/2023 - Initial version
#>

# Define the target total size in GB
$targetTotalSizeGB = 100

# Specify the mailbox database name to search within
$mailboxDatabaseName = "DB01"

# Define the export file path
$exportFilePath = "C:tempMailboxes.csv"

# Get a list of mailbox sizes within the specified mailbox database
$mailboxSizes = Get-Mailbox -ResultSize Unlimited -Database $mailboxDatabaseName |
Get-MailboxStatistics |
Select-Object DisplayName, @{Name = "TotalItemSizeGB"; Expression = { [math]::Round($_.TotalItemSize.Value.ToBytes() / 1GB, 2) } } |
Sort-Object TotalItemSizeGB

# Initialize variables
$Report = [System.Collections.Generic.List[Object]]::new()
$currentTotalSizeGB = 0

# Iterate through mailboxes to find a combination that adds up to the target total size
foreach ($mailbox in $mailboxSizes) {
    $mailboxSizeGB = $mailbox.TotalItemSizeGB

    # Check if adding this mailbox keeps the total size within or equal to the target size
    if (($currentTotalSizeGB + $mailboxSizeGB) -le $targetTotalSizeGB) {
        $selectedMailbox = Get-Mailbox $mailbox.DisplayName -ResultSize Unlimited
        $upn = $selectedMailbox.UserPrincipalName
        $smtpPrimary = $selectedMailbox.PrimarySmtpAddress
        $smtpAliases = $selectedMailbox.EmailAddresses | Where-Object { $_.PrefixString -eq "smtp" -and $_.SmtpAddress -ne $smtpPrimary } | ForEach-Object { $_.SmtpAddress }

        $ReportLine = [PSCustomObject]@{
            'DisplayName'        = $mailbox.DisplayName
            'TotalSizeGB'        = $mailbox.TotalItemSizeGB
            'UserPrincipalName'  = $upn
            'PrimarySmtpAddress' = $smtpPrimary
            'SMTPAliasAddresses' = $smtpAliases -join ", "
        }
        # Add the report line to the List
        $Report.Add($ReportLine)

        # Check if the current total size equals the target size or exceeds it
        if ($currentTotalSizeGB -ge $targetTotalSizeGB) {
            break
        }
    }
}

# Display the selected mailboxes in an interactive table
$Report | Sort-Object TotalSizeGB -Descending | Out-GridView -Title "Selected Mailboxes"

Write-Host "Total Size: $currentTotalSizeGB GB" -ForegroundColor Cyan

# Export the selected mailboxes to a CSV file
$Report | Sort-Object TotalSizeGB -Descending | Export-Csv -Path $exportFilePath -NoTypeInformation -Encoding UTF8

# Display a message indicating successful export
Write-Host "File exported successfully to $exportFilePath" -ForegroundColor Green
  • Linje 21:Rediger den samlede størrelse
  • Linje 24:Rediger databasenavnet
  • Linje 27:Rediger eksport-CSV-filstien

Kør Export-MailboxesTotalSize PowerShell-script

Kør Exchange Management Shell som administrator. Skift stien til scripts-mappen. Kør derefter scriptet Export-MailboxesTotalSize.ps1.

PS C:> cd c:scripts
PS C:scripts> .Export-MailboxesTotalSize.ps1

Outputtet vil vise den samlede størrelse i GB, som det indsamlede.

Total Size: 1.18 GB

Tjek postkasser i Out-GridView

AnOut-GridViewvil vise kolonner med postkasserne og deres samlede størrelse i GB.

Åbn postkasser rapport CSV-fil

Export-MailboxesTotalSize.ps1 PowerShell-scriptet eksporterer postkasserne mindre end den samlede størrelse til CSV-fil. Find filen Mailboxes.csv i stienC:temp.

Åbn CSV-filen med din yndlingsapplikation. I dette eksempel er det Microsoft Excel.

Postkasserne, der er mindre end den samlede størrelsesrapport, ser godt ud.

Note:Vil du eksportere alle postkasserne til CSV-fil og få hele deres postkassestørrelse og mere information? Læs artiklen Få postkassestørrelse på alle brugere i Exchange med PowerShell.

Konklusion

Du lærte, hvordan du eksporterer postkasser mindre end den samlede størrelse med Powershell. Få rapporten om postkasser, der er mindre end den samlede størrelse, med Export-MailboxesTotalSize.ps1 PowerShell-scriptet, og få et godt kig på det.

Nyd du denne artikel? Du kan også lide Migrate Exchange-postkasser med CSV-fil. Glem ikke at følge os og dele denne artikel.

Related Posts