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:
- DisplayName
- TotalSizeGB
- UserPrincipalName
- PrimarySMTPAddress
- 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.ps1A kimenet az összesített méretet mutatja GB-ban.
Total Size: 1.18 GBEllenő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.














