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:
- Vist navn
- Samlet størrelse GB
- BrugerPrincipalName
- PrimærSMTP-adresse
- 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.ps1Outputtet vil vise den samlede størrelse i GB, som det indsamlede.
Total Size: 1.18 GBTjek 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.










