Chcemy uzyskać skrzynki pocztowe w Exchange Server, których łączny rozmiar jest mniejszy niż podana ilość. Jest to doskonały sposób przed migracją skrzynek pocztowych do innej bazy danych. W tym artykule dowiesz się, jak wyeksportować skrzynki pocztowe mniejsze niż całkowity rozmiar.
Eksportuj skrzynki pocztowe mniejsze niż całkowity rozmiar skryptu PowerShell
Funkcja Export-MailboxesTotalSize.ps1 pobierze wszystkie skrzynki pocztowe o rozmiarze mniejszym niż całkowity rozmiar zdefiniowany w skrypcie. Dla każdej skrzynki pocztowej zbiera następujące informacje:
- Nazwa wyświetlana
- Całkowity rozmiar GB
- Nazwa główna użytkownika
- Podstawowy adresSMTP
- Adresy SMTPAlias
Notatka:Jeśli w skrypcie zdefiniujesz całkowity rozmiar 100 GB, a dwie skrzynki pocztowe będą miały rozmiar 50 GB, zostaną wyświetlone tylko te dwie skrzynki pocztowe. Dzieje się tak dlatego, że sumując obie skrzynki pocztowe, mamy łącznie 100 GB.
Przygotuj skrypt Export-MailboxesTotalSize PowerShell
Utwórz dwa foldery na serwerze Exchange(C:)prowadzić:
- Temp
- Skrypty
Pobierz i umieść w nim skrypt Export-MailboxesTotalSize.ps1 PowerShellC:skryptyfalcówka. Skrypt wyeksportuje plik CSV doC:tempfalcówka.
Upewnij się, że plik jest odblokowany, aby zapobiec błędom podczas uruchamiania skryptu. Przeczytaj więcej w artykule Błąd braku podpisu cyfrowego podczas uruchamiania skryptu PowerShell.
Inną opcją jest skopiowanie i wklejenie poniższego kodu do Notatnika. Podaj nazwęEksportuj-MailboxesTotalSize.ps1i umieść go wC:skryptyfalcówka.
<#
.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- Linia 21:Edytuj całkowity rozmiar
- Linia 24:Edytuj nazwę bazy danych
- Linia 27:Edytuj ścieżkę pliku eksportu CSV
Uruchom skrypt PowerShell Export-MailboxesTotalSize
Uruchom Exchange Management Shell jako administrator. Zmień ścieżkę do folderu skryptów. Następnie uruchom skrypt Export-MailboxesTotalSize.ps1.
PS C:> cd c:scripts
PS C:scripts> .Export-MailboxesTotalSize.ps1Dane wyjściowe pokażą całkowity rozmiar w GB, który zebrał.
Total Size: 1.18 GBSprawdź skrzynki pocztowe w Out-GridView
JakiśOut-GridViewpokaże kolumny ze skrzynkami pocztowymi i ich całkowitym rozmiarem w GB.

Otwórz plik CSV raportujący o otwartych skrzynkach pocztowych
Skrypt Export-MailboxesTotalSize.ps1 PowerShell wyeksportuje do pliku CSV skrzynki pocztowe mniejsze niż całkowity rozmiar. Znajdź w ścieżce plik Mailboxes.csvC:temp.
Zobacz także:Blokuj logowanie z udostępnionych skrzynek pocztowych
Otwórz plik CSV ze swoją ulubioną aplikacją. W tym przykładzie jest to Microsoft Excel.

Skrzynki pocztowe mniejsze niż raport o rozmiarze całkowitym wyglądają świetnie.
Notatka:Czy chcesz wyeksportować wszystkie skrzynki pocztowe do pliku CSV i uzyskać pełny rozmiar ich skrzynek pocztowych oraz więcej informacji? Przeczytaj artykuł Uzyskaj rozmiar skrzynek pocztowych wszystkich użytkowników w Exchange za pomocą PowerShell.
Wniosek
Nauczyłeś się, jak eksportować skrzynki pocztowe mniejsze niż całkowity rozmiar za pomocą programu Powershell. Uzyskaj raport dotyczący skrzynek pocztowych mniejszych niż całkowity rozmiar za pomocą skryptu PowerShell Export-MailboxesTotalSize.ps1 i dobrze się temu przyjrzyj.
Czy podobał Ci się ten artykuł? Możesz także zainteresować się migracją skrzynek pocztowych Exchange za pomocą pliku CSV. Nie zapomnij nas obserwować i udostępnić ten artykuł.










