1. Anasayfa
  2. Microsoft 365

Exchange Online Mailbox ve Arşiv Boyutu Raporu Alma


Microsoft 365 ile gelen Exchange Online kurumların e-posta yönetiminde en çok tercih edilen çözümlerden biridir.

Kullanıcıların posta kutuları zamanla büyür, ekler, arşivlenen yazışmalar ve günlük e-posta trafiği nedeniyle kotaya yaklaşabilir.

IT yöneticileri için bu büyümeyi takip etmek önemlidir:

  • Kapasite planlaması yapmak,
  • Kota aşımı yaşanmadan önlem almak,
  • Gereksiz büyüyen kutulara müdahale etmek,
  • Düzenli raporlama ile üst yönetime bilgi sunmak.

Bu makalemde Exchange Online ortamındaki tüm kullanıcıların hem ana posta kutusu (Primary Mailbox) hem de arşiv posta kutusu (Archive Mailbox) boyutlarını topluca raporlayan bir PowerShell script’i bulacaksınız.

Exchange Online’a Bağlanmak

Öncelikle PowerShell üzerinden Exchange Online’a bağlanmamız gerekir. Bunun için gerekli modülün yüklü olduğundan emin olunuz.

Install-Module ExchangeOnlineManagement

Ardından oturum açınız. Bu komuttaki kullanici@domain.com yerine yetkili bir hesabınızı yazınız.

Connect-ExchangeOnline -UserPrincipalName kullanici@domain.com

Rapor Script’i

Aşağıdaki script:

  • Tüm kullanıcı posta kutularını tarar,
  • Her kullanıcının Primary ve Archive boyutlarını hesaplar,
  • Sonuçları masaüstünde CSV dosyası olarak kaydeder.
$today = Get-Date -Format "yyyy-MM-dd"
$outputPath = "$env:USERPROFILE\Desktop\Mailbox_Boyut_Raporu_$today.csv"

$mailboxes = Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq 'UserMailbox'}

$results = foreach ($mb in $mailboxes) {
    try {
        $stat = Get-MailboxStatistics -Identity $mb.UserPrincipalName
        $sizeString = $stat.TotalItemSize.ToString()
        $byteMatch = [regex]::Match($sizeString, '\(([\d,\.]+)\sbytes\)').Groups[1].Value
        $byteClean = $byteMatch -replace '\.', '' -replace ',', ''
        $bytes = [double]::Parse($byteClean)
        $primarySizeMB = [math]::Round($bytes / 1MB, 2)
    } catch {
        $primarySizeMB = 0
    }

    try {
        if ($mb.ArchiveStatus -eq "Active") {
            $archiveStat = Get-MailboxStatistics -Archive -Identity $mb.UserPrincipalName
            $archiveString = $archiveStat.TotalItemSize.ToString()
            $archiveMatch = [regex]::Match($archiveString, '\(([\d,\.]+)\sbytes\)').Groups[1].Value
            $archiveClean = $archiveMatch -replace '\.', '' -replace ',', ''
            $archiveBytes = [double]::Parse($archiveClean)
            $archiveSizeMB = [math]::Round($archiveBytes / 1MB, 2)
        } else {
            $archiveSizeMB = 0
        }
    } catch {
        $archiveSizeMB = 0
    }

    [PSCustomObject]@{
        "Görünen Ad"        = $mb.DisplayName
        "E-Posta Adresi"    = $mb.UserPrincipalName
        "Posta Kutusu (MB)" = $primarySizeMB
        "Arşiv Kutusu (MB)" = $archiveSizeMB
    }
}

$results | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

4. Çıktı Örneği

Script çalıştıktan sonra masaüstünüzde Mailbox_Boyut_Raporu_yyyy-MM-dd.csv dosyası oluşur. Bu dosyayı Excel’de açarak kullanıcıların kutu boyutlarını analiz edebilirsiniz.

Görünen AdE-Posta AdresiPosta Kutusu (MB)Arşiv Kutusu (MB)
Veli Kadir KOZANkadir.kozan@domain.com4850,2310240,56
Lena KOZANlena.kozan@domain.com3098,771232.52

Otomasyon:
Script’i Windows Task Scheduler ile günlük/haftalık çalışacak şekilde zamanlayabilir, raporun güncel kalmasını sağlayabilirsiniz.

E-posta ile gönderme:
Sonuç CSV dosyasını otomatik olarak yöneticilere e-posta gönderecek şekilde script’e SMTP satırları ekleyebilirsiniz.

Filtreleme:
Belirli departmanları veya OU’ları raporlamak için Get-Mailbox komutuna filtreler eklenebilir. Örneğin:

Get-Mailbox -ResultSize Unlimited -OrganizationalUnit "OU=Sales-Accounts,DC=domain,DC=com"

Birim Dönüşümü:
Script MB cinsinden rapor üretir. İsterseniz 1GB değerini kullanarak GB cinsinden çıktı alabilirsiniz.

Not :

  • Arşivi olmayan kullanıcılar için değer 0 MB döner.
  • Bağlantı hatalarında Connect-ExchangeOnline adımını kontrol edin.
  • Büyük tenant’larda çalıştırıldığında biraz zaman alabilir sabırlı olmak gerek.