TeknikUzman.com
Teknolojik Yardımlaşma Topluluğu

Exchange 2007’de Mailbox İstatistiklerinin Elde Edilmesi

Bu makalede Exchange Management Shell komutu kullanılarak Mailbox istatistiklerinin hangi yollardan elde edileceği ve bu istatistiklerin sonuçlarının ne şekilde kullanılabileceği anlatılmaktadır.  

Mailbox’ların ve bunların boyutlarının listesini çıkarma içi, muhtemelen Exchange yöneticilerinin en fazla meşgul eden işlerden biridir.  Exchange 2000 ve Exchange 2003’te bu bilgileri Exchange Sistem Yöneticisi eklentisi içinde görmek mümkündü. Aynı zamanda Exchange Sistem Yöneticisi içinde sunulan bilgiler metin formatına dönüştürülebiliyordu ve daha sonra da Excel gibi programlara taşınabiliyordu. Exchange camiasının diğer üyeleri aynı amaca yönelik olarak Windows Management Instrumentation (WMI) veya Messaging Application Programming Interface (MAPI) programlarını kullanan VB komutları geliştirdiler. Tabii ki bazı Exchange yöneticileri için bu komutları anlamak ve değiştirmek  kimi zaman zor olabiliyordu. Herkesin bildiği gibi, Exchange 2007, komut satırından yönetim sağlayan bir Exchange Management Shell birimi sunuyorken komutlardan ya da daha yaygın ifadesiyle cmdlets’lerden biri ise Exchange yöneticilerine mailbox istatistiklerini elde etmek için çok daha basit bir yaklaşım sunuyor.

Mailbox İstatistiklerini Elde Etme – Temel konular

Exchange Management Shell üzerinde kullanılabilecek en temel komut Get-MailboxStatistics komutudur. Şekil 1’de  bu komutu hiçbir ilave parametre olmaksızın çalıştırınca ortaya çıkan sonuçların örneği gösterilmektedir. Burada, yerel mailbox sunucusuyla karşılaşılmaktadır

Şekil 1: Get-MailboxStatistics komutunun varsayılan sonuçları

Görebileceğiniz gibi, varsayılan olarak bu komut bize yerel sunucu üzerindeki her bir mailbox için 4 tür bilgi vermektedir; bu bilgiler mailbox’ın adı, mailbox’taki nesne sayısı, mailbox depolama limiti durumu ve en son giriş tarihi bilgileridir. Mailbox’ın mevcut boyutu varsayılan olarak gösterilmemektedir, dolayısıyla yapılması gereken ilk şey bu bilgiyi depolayacak özelliğin adını belirlemek olacaktır. Alınabilecek mevcut özellikleri belirlemenin bir yolu komutla elde edilen sonuçları Format-List ya da kısaca fl komutuna aktarmak olacaktır. Bu durumda komutumuz şu şekilde olacaktır:

Get-MailboxStatistics | fl

Bu komut çalıştırıldığında ortaya çıkan sonuçlar Şekil 2’de gösterilmektedir; burada 2 no’lu kullanıcının mailbox’ının özellikleri görülebilmektedir.

Şekil 2: Get-MailboxStatistics | fl komutunun sonuçları

Artık toplamda 1584504B yani yaklaşık 1.5MB olan toplam nesne boyutu gibi diğer önemli bilgileri de görebilmeniz mümkün olmaktadır. 2 no’lu kullanıcının çok büyük bir  Exchange 2007 kullanıcısı olmadığı açıkça görülebilmektedir. İlgilendiğimiz özelliğin adının TotalItemSize (toplam nesne boyutu) olduğunu bildiğimize göre, mailbox adı ve nesne sayısı bilgilerinin yanında toplam nesne boyutu bilgisini de almak için orijinal komutumuzu değiştirebiliriz. Kullanılması gereken yeni komut aşağıda gösterilmiştir. Sonuçları tablo formatında görüntülemek için bu sefer Format-Table, ya da kısaca ft komutunu kullandığımıza dikkat etmeniz gerekmektedir:

Get-MailboxStatistics | ft DisplayName,TotalItemSize,ItemCount

Bu komut çalıştırıldığında ortaya çıkan sonuçlar Şekil 3’te gösterilmiştir.

Şekil 3: Mailbox boyutlarıyla birlikte mailbox istatistiklerinin elde edilmesi

Artık neleri bilmemiz gerektiğini belli bir ölçüde gösteren sonuçları elde ettiğimiz bir aşamaya gelmiş bulunuyoruz. Ancak bu sonuçlar içinde birkaç eksik husus bulunmaktadır. Öncelikle belirtilmesi gereken şey, sonuçların aşağıdan yukarıya veya yukarıdan aşağıya şeklinde görüntülenmemesidir, bu yüzden de en büyük boyutlu mailbox’ların hangileri olduğunu görmek zordur. Diğer bir konu ise TotalItemSize sütununun varsayılan olarak byte cinsinden gösterilmesi ve bu durumun analiz yapmayı zorlaştırmasıdır.

Mailbox istatistikleriyle ilgili ilave formatlar

Öncelikle sonuçların sırasını ele alalım. PowerShell üzerinden sizin de tahmin ettiğiniz gibi Sort-Object komutunu kullanarak nesneleri sıralamak gerçekten çok kolay bir işlemdir. Bu çalışmayı gerçekleştirmek için tek yapmanız gereken mailbox istatistiklerini çıkarmak ve sonuçları Format-Table komutuna aktarmadan önce Sort-Object komutuna aktarmaktır.  Sort-Object komutu konusunda yapmamız gereken şey ise hangi sütunlar içinde sıralama yapmak istediğimize ve sıralamanın hangi yöne doğru olmasını istediğimize karar vermektir. Sort-Object komutuna eklememiz gereken ilk parametre sıralamanın yapılacağı sütunun adıdır, bizim örneğimizde TotalItemSize parametresini ekliyoruz. Daha sonra sıralamanın yönünü belirlemek için Yukarıdan aşağıya veya Aşağıdan yukarıya şeklinde bir ekleme yapıyoruz. Öncelikle en geniş olan ve aslında Exchange yöneticilerinin öncelikli olarak bilmesi gereken mailbox’ları gösterelim. Çalıştırılacak komutun son hali aşağıdaki gibidir:

Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,TotalItemSize,ItemCount

Bu komut çalıştırıldığında ortaya çıkan sonuçlar Şekil 4’te gösterilmektedir.

Şekil 4:  Mailbox boyutuna göre yukarıdan aşağıya dizilmiş şekilde mailbox istatistiklerinin elde edilmesi

Daha sonra mailbox boyutlarıyla ilgili olarak byte cinsinden verilen bilgiyi daha fazla anlam ifade eden ve faydalı bir bilgiye dönüştürmemiz gerekecektir. Gelecekte çok fazla artacak mailbox boyutlarına paralel olarak gigabyte artık varsayılan olarak kullanılacak olsa da bu aşamada byte’i dönüştürmemiz gereken formatın megabyte olacağı herkesin katılacağı biz çözüm olacaktır. Ancak, örnekteki test sistemimizde nispeten küçük boyutlu mailbox’lar olduğu için mailbox’ların büyüklüklerini kilobyte cinsinden göstereceğiz.  Bunu yapabilmek için komutumuzdaki TotalItemSize parametresi yerine doğası gereği biraz daha karmaşık bir parametre koyacağız:

@{ expression={$_.TotalItemSize.Value.ToKB()}}

Değiştirme işleminden sonra komutumuz aşağıdaki gibi olacaktır:

Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,@{ expression={$_.TotalItemSize.Value.ToKB()}},ItemCount

Bu komut çalıştırıldığında ortaya çıkan sonuçlar Şekil 5’te gösterilmektedir. Eğer mailbox boyutunun MB cinsinden gösterilmesini istiyorsanız, yukarıdaki komutta TotalItemSize.Value.ToMB parametresini kullanın. Tabii ki parametreyi TotalItemSize.Value.ToGB şeklinde de kullanabilirsiniz.

Şekil 5: Mailbox boyutunun KB cinsinde gösterilmesi seçeneğini içeren mailbox istatistiklerinin elde edilmesi

Artık daha güzel bir ekranımız var, ama daha bitmedi! Şimdi sütun isimlerine bakın. Daha önce adı TotalItemSize olan sütunun referansının şu anda oldukça zor bir isim olan $_.TotalItemSize.Value.ToKB() şeklinde gösterildiğini göreceksiniz. Ancak komuta yeni bir etiket ekleyerek bu konuyu kolayca  çözebiliriz. Aslında tek yapmanız gereken şey sütunu uygun şekilde yeniden adlandırmak için komutu değiştirmektir. Yeni komut aşağıda verilmiştir:

Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(KB)";expression={$_.TotalItemSize.Value.ToKB()}},ItemCount

Bu komut çalıştırıldığında ortaya çıkan sonuçlar Şekil 6’da mevcuttur:

Şekil 6: Değiştirilmiş sütun isimleriyle birlikte mailbox istatistiklerinin elde edilmesi

En sonunda güzel bir formata sahip olan ve en büyük boyutlu mailbox’ları tespit etmemize olanak sağlayan bir sonuca ulaştık. Hiç kimse bu komutu her gün, her hafta veya her ay çalıştırmak zorunda kalmak istemez. Sistem Merkezi Operasyon Yöneticisi 2007 gibi uygulamalar, yönetim konsolu vasıtasıyla bu bilgileri size geri getirebilir, peki benzer bir şeyi Exchange Management Shell’i kullanarak nasıl yapabiliriz? Bunun en açık yöntemi bilgileri e-mail’le göndermektir. Şimdi bunun nasıl yapılabileceğini inceleyelim.

Sonuçların e-mail’le gönderilmesi

Şekil 7’de sendstats.ps1 adı verilen bir PowerShell komutu görülmektedir. Makalemizde oluşturduğumuz komut üzerinden mailbox istatistikleri oluşturmak için ve daha sonra da bu komutu çalıştırınca çıkan sonuçları Exchange yöneticisine e-mail’le göndermek için bu komut kullanılabilir. Komutla ilgili olarak dikkat edilmesi gereken ilk şey Get-MailboxStatistics komutunun sonuçlarının mailboxes.txt adlı bir dosyaya yönlendirilmiş olmasıdır. Bu dosya, ilgili komutun çalıştırıldığı klasör içinde oluşturulmaktadır. Komutun diğer satırları, mailbox.txt dosyasını eke koyarak e-mail’i oluşturmakta ve göndermektedir. Dikkat çekmemiz gereken bir nokta starting $SendingServer şeklinde başlayan satırın mesajı göndermekten sorumlu olan mail sunucusunun FQDN’ye yani tam olarak belirli olan alan adına atıfta bulunmasıdır. Dolayısıyla ilgili sunucunun mesajı gerçekten aktarabileceğinden emin olunması ihtiyacı açıkça ortaya çıkmaktadır.

###Send mailbox statistics script

###First, the administrator must change the mail message values in this section.
$FromAddress = "MailboxReport@ngh.net"
$ToAddress = "administrator@ngh.net"
$MessageSubject = "Mailbox Size Report"
$MessageBody = "Attached is the current list of mailbox sizes."
$SendingServer = "e2k7.ngh.net"

###Now get the stats and store in a text file
Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft
DisplayName,@{label="TotalItemSize(KB)";expression={$_.TotalItemSize.Value.ToKB()}},
ItemCount > mailboxes.txt

###Create the mail message and add the statistics text file as an attachment
$SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress,
$MessageSubject, $MessageBody
$Attachment = New-Object Net.Mail.Attachment("./mailboxes.txt")
$SMTPMessage.Attachments.Add($Attachment)

###Send the message
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
$SMTPClient.Send($SMTPMessage)

Şekil 7: SendStats.PS1 komutu

Şekil 8’de de görülebileceği gibi komut çalıştırılınca  e-mail’i gönderebilmektedir. Mail’in eki açıldığında, Şekil 9’da belirtilen Mailbox İstatistikleri Elde Etme komutunun sonucu görülebilecektir.

Şekil 8: E-mail’le gönderilen rapor

Şekil 9: E-mail ekinin içeriği

Elimizde ilgili verileri içeren bir e-mail mesajı olsa da komut içerisinde komutun periyodik olarak çalıştırıldığını gösteren herhangi birşey bulunmamaktadır. Bunu yapmak için, Windows programlayıcı hizmetini kullanarak komutun düzenli aralıklarla çalışmasını sağlayabiliriz. Bu işlem için Exchange Management Shell programını açıp çalıştırılmasını istediğimiz komutu belirlememiz gerekmektedir. Aşağıdaki komut bu konuda işimize yarayacaktır:

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.psc1" -Command "./sendstats.ps1"

Bu noktada PowerShell’in çalıştığını ve örneğimize göre C: sürücüsünde yer alan Exchange konsolu dosyasını yüklediğini görebilirsiniz. Tabii ki Exchange 2007’yi hangi sürücü üzerine yüklediyseniz konsol dosyasının da o sürücü üzerine kaydedilmesi gerekecektir. Çalıştırmak istediğimiz komutu yani sendstats.ps1’i belirlemek için komut parametresini kullanmaktayız

Özet

Bu makalede Exchange yöneticilerinin sıkça karşılaştığı bir konu olan mailbox listesi ve boyutu hazırlama işine değindik. SCOM 2007 gibi araçlar bu işi yapmanıza olanak sağlasa da, Exchange Management Shell cmdlet Get-MailboxStatistics komutunu kullanarak aynı sonuçlara ulaşmanın çok basit olduğu görülebilmektedir. PowerShell,  öğrenmesi biraz zaman alsa da öğrendikten sonra işlerinizi çok kolay bir hale getirecek bir araçtır.

 


Tarih May 16 2008, 03:50 PM Gönderen Uzman
TeknikUzman.com