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:
- Visningsnavn
- Totalstørrelse GB
- UserPrincipalName
- PrimærSMTP-adresse
- 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.ps1Utdataene vil vise den totale størrelsen i GB som den samlet.
Total Size: 1.18 GBSjekk 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.













