Hvordan eksportere postkasser mindre enn total størrelse

Vi ønsker å få postkasser i Exchange Server som er i total størrelse mindre enn det oppgitte beløpet. Dette er en utmerket måte før vi migrerer postkassene til en annen database. I denne artikkelen lærer du hvordan du eksporterer postkasser som er mindre enn totalstørrelsen.

Eksporter postbokser som er mindre enn totalstørrelsen PowerShell-skript

Export-MailboxesTotalSize.ps1 vil få alle postbokser som er mindre enn den totale sumstørrelsen du definerer i skriptet. For hver postkasse samler den inn følgende informasjon:

  1. Visningsnavn
  2. Totalstørrelse GB
  3. UserPrincipalName
  4. PrimærSMTP-adresse
  5. SMTPAlias-adresser

Note:Hvis du definerer en total størrelse på 100 GB i skriptet og to postbokser er 50 GB store, vil det kun vise disse to postboksene. Det er fordi oppsummering av begge postkassene er totalt 100 GB.

Forbered Export-MailboxesTotalSize PowerShell-skript

Opprett to mapper på Exchange Server(C:)kjøre:

  • Temp
  • Skript

Last ned og plasser Export-MailboxesTotalSize.ps1 PowerShell-skript iC:skriptmappe. Skriptet vil eksportere CSV-filen tilC:tempmappe.

Sørg for at filen er opphevet for å forhindre feil når du kjører skriptet. Les mer i artikkelen Ikke digitalt signert feil ved kjøring av PowerShell-skript.

RELATERT:Blokker pålogging fra delte postbokser

Et annet alternativ er å kopiere og lime inn koden nedenfor i Notisblokk. Gi den navnetExport-MailboxesTotalSize.ps1og plasser den iC:skriptmappe.

<#
    .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 totale størrelsen
  • Linje 24:Rediger databasenavnet
  • Linje 27:Rediger eksport-CSV-filbanen

Kjør Export-MailboxesTotalSize PowerShell-skript

Kjør Exchange Management Shell som administrator. Endre banen til skriptmappen. Deretter kjører du Export-MailboxesTotalSize.ps1-skriptet.

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

Utdataene vil vise den totale størrelsen i GB som den samlet.

Total Size: 1.18 GB

Sjekk postbokser i Out-GridView

AnOut-GridViewvil vise kolonner med postkassene og deres totale størrelse i GB.

Åpne postboksrapport CSV-fil

Export-MailboxesTotalSize.ps1 PowerShell-skriptet vil eksportere postkassene mindre enn den totale størrelsen til CSV-fil. Finn filen Mailboxes.csv i banenC:temp.

Åpne CSV-filen med favorittappen din. I dette eksemplet er det Microsoft Excel.

Postkassene som er mindre enn totalstørrelsesrapporten ser bra ut.

Note:Vil du eksportere alle postkassene til CSV-fil og få all postkassestørrelse og mer informasjon? Les artikkelen Få postboksstørrelse for alle brukere i Exchange med PowerShell.

Konklusjon

Du lærte hvordan du eksporterer postkasser som er mindre enn totalstørrelsen med Powershell. Få rapporten om postkassene som er mindre enn den totale størrelsen med Export-MailboxesTotalSize.ps1 PowerShell-skriptet og ta en god titt på det.

Likte du denne artikkelen? Du kan også like Migrate Exchange-postbokser med CSV-fil. Ikke glem å følge oss og dele denne artikkelen.

Related Posts