A teljes méretnél kisebb postafiókok exportálása

Olyan postaládákat szeretnénk elérni az Exchange Serverben, amelyek összmérete kisebb, mint a megadott mennyiség. Ez egy kiváló módja annak, hogy a postafiókokat egy másik adatbázisba migráljuk. Ebből a cikkből megtudhatja, hogyan exportálhat a teljes méretnél kisebb postafiókokat.

A PowerShell-szkript teljes méreténél kisebb postafiókok exportálása

Az Export-MailboxesTotalSize.ps1 minden olyan postafiókot megkap, amely kisebb, mint a szkriptben meghatározott teljes összeg. Minden postafiókhoz a következő információkat gyűjti össze:

  1. DisplayName
  2. TotalSizeGB
  3. UserPrincipalName
  4. PrimarySMTPAddress
  5. SMTPAliasAddresses

Jegyzet:Ha 100 GB-os teljes méretet ad meg a szkriptben, és két postafiók mérete 50 GB, akkor csak ezt a két postafiókot jeleníti meg. Ennek az az oka, hogy mindkét postafiókot összeadva összesen 100 GB.

Készítse elő az Export-MailboxesTotalSize PowerShell-szkriptet

Hozzon létre két mappát az Exchange kiszolgálón(C:)hajtás:

  • Temp
  • Szkriptek

Töltse le és helyezze be az Export-MailboxesTotalSize.ps1 PowerShell-szkriptetC:scriptsmappát. A szkript exportálja a CSV-fájlt aC: tempmappát.

Győződjön meg arról, hogy a fájl blokkolása fel van oldva, hogy elkerülje a hibákat a szkript futtatásakor. További információ a cikkben: Nem digitálisan aláírt hiba a PowerShell-szkript futtatásakor.

ÖSSZEFÜGGŐ:A megosztott postafiókokból történő bejelentkezés letiltása

Egy másik lehetőség az alábbi kód másolása és beillesztése a Jegyzettömbbe. Adja meg a nevetExport-MailboxesTotalSize.ps1és helyezze be aC:scriptsmappát.

<#
    .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
  • 21. sor:Szerkessze a teljes méretet
  • 24. sor:Szerkessze az adatbázis nevét
  • 27. sor:Szerkessze az exportált CSV-fájl elérési útját

Futtassa az Export-MailboxesTotalSize PowerShell szkriptet

Futtassa az Exchange Management Shell-t rendszergazdaként. Módosítsa a scripts mappa elérési útját. Ezt követően futtassa az Export-MailboxesTotalSize.ps1 parancsfájlt.

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

A kimenet az összesített méretet mutatja GB-ban.

Total Size: 1.18 GB

Ellenőrizze a postafiókokat az Out-GridView-ban

AnOut-GridViewoszlopokat jelenít meg a postafiókokkal és azok teljes méretével GB-ban.

Nyissa meg a postaládák jelentésének CSV-fájlját

Az Export-MailboxesTotalSize.ps1 PowerShell-szkript a teljes méretnél kisebb postafiókokat CSV-fájlba exportálja. Keresse meg a Mailboxes.csv fájlt az elérési útbanC: temp.

Nyissa meg a CSV-fájlt kedvenc alkalmazásával. Ebben a példában ez a Microsoft Excel.

A jelentés teljes méreténél kisebb postafiókok jól néznek ki.

Jegyzet:Szeretné exportálni az összes postafiókot CSV-fájlba, és megkapni az összes postafiók méretét és további információkat? Olvassa el az Exchange összes felhasználójának postafiókméretének megállapítása a PowerShell segítségével című cikket.

Következtetés

Megtanulta, hogyan exportálhat a teljes méretnél kisebb postafiókokat a Powershell segítségével. Az Export-MailboxesTotalSize.ps1 PowerShell-szkript segítségével készítse el a teljes méretnél kisebb postaládák jelentését, és nézze meg alaposan.

Tetszett ez a cikk? A CSV-fájllal rendelkező Exchange-postafiókok áttelepítése is tetszhet. Ne felejtsen el követni minket és megosztani ezt a cikket.

Related Posts