Toplam boyuttan daha küçük posta kutuları nasıl dışa aktarılır


Exchange Server'da toplam boyutu verilen miktardan daha küçük olan posta kutuları almak istiyoruz. Bu, posta kutularını başka bir veritabanına taşımadan önce mükemmel bir yoldur. Bu makalede, toplam boyuttan küçük posta kutularını nasıl dışa aktaracağınızı öğreneceksiniz.

Toplam boyuttan daha küçük posta kutularını dışa aktar PowerShell betiği

Export-MailboxesTotalSize.ps1, komut dosyasında tanımladığınız toplam toplam boyuttan daha küçük olan tüm posta kutularını alır. Her posta kutusu için aşağıdaki bilgileri toplar:

  1. Ekran adı

  2. ToplamBoyutGB

  3. KullanıcıPrincipalName

  4. BirincilSMTPAdresi

  5. SMTPAliasAdresler

Not: Komut dosyasında toplam 100 GB boyut tanımlarsanız ve iki posta kutusu 50 GB boyutundaysa yalnızca bu iki posta kutusu gösterilir. Bunun nedeni, her iki posta kutusunun toplamının toplam 100 GB olmasıdır.

Dışa Aktarma Posta KutularıTotalSize PowerShell betiğini hazırlayın

Exchange Server (C:) sürücüsünde iki klasör oluşturun:

  • Sıcaklık

  • Kodlar

Export-MailboxesTotalSize.ps1 PowerShell betiğini indirin ve C:\scripts klasörüne yerleştirin. Komut dosyası, CSV dosyasını C:\temp klasörüne aktaracaktır.

Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Export-MailboxesTotalSize.ps1 adını verin ve C:\scripts klasörüne yerleştirin.

<#
    .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:\temp\Mailboxes.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
$selectedMailboxes = @()
$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 }
        
        $selectedMailboxes += [PSCustomObject]@{
            'DisplayName'        = $mailbox.DisplayName
            'TotalSizeGB'        = $mailbox.TotalItemSizeGB
            'UserPrincipalName'  = $upn
            'PrimarySmtpAddress' = $smtpPrimary
            'SMTPAliasAddresses' = $smtpAliases -join ", "
        }
        
        $currentTotalSizeGB += $mailboxSizeGB

        # 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
$selectedMailboxes | 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
$selectedMailboxes | 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. Satır: Toplam boyutu düzenleyin

  • Satır 24: Veritabanı adını düzenleyin

  • Satır 27: Dışa aktarılan CSV dosyasının yolunu düzenleyin

Dışa Aktarma-MailboxesTotalSize PowerShell betiğini çalıştır

Exchange Management Shell'i yönetici olarak çalıştırın. Komut dosyaları klasörünün yolunu değiştirin. Bundan sonra Export-MailboxesTotalSize.ps1 komut dosyasını çalıştırın.

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

Çıktı, topladığı toplam boyutu GB cinsinden gösterecektir.

Total Size: 1.18 GB

Out-GridView'da posta kutularını kontrol edin

Out-GridView, posta kutularını içeren sütunları ve bunların GB cinsinden toplam boyutunu gösterir.

Posta kutuları raporu CSV dosyasını aç

Export-MailboxesTotalSize.ps1 PowerShell betiği, toplam boyuttan daha küçük olan posta kutularını CSV dosyasına aktaracaktır. C:\temp yolunda Mailboxes.csv dosyasını bulun.

CSV dosyasını favori uygulamanızla açın. Bu örnekte, Microsoft Excel'dir.

Toplam boyut raporundan daha küçük olan posta kutuları harika görünüyor.

Not: Tüm posta kutularını CSV dosyasına aktarmak ve tüm posta kutusu boyutlarını ve daha fazla bilgiyi almak ister misiniz? PowerShell ile Exchange'deki tüm kullanıcıların posta kutusu boyutunu alma makalesini okuyun.

Çözüm

Powershell ile toplam boyuttan küçük posta kutularını nasıl dışa aktaracağınızı öğrendiniz. Export-MailboxesTotalSize.ps1 PowerShell betiğiyle toplam boyuttan küçük posta kutuları raporunu alın ve iyice inceleyin.

Bu makaleyi beğendiniz mi? CSV dosyasıyla Exchange posta kutularını geçirme seçeneğini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler