Get-MessageTrackingLog: Exchange Sunucusunda Mesaj İzleme Günlüklerini Ara
Posta akışını, adli iletileri analiz etmek ve e-posta kuruluşunuzdaki belirli bir posta kutusu tarafından gönderilen veya alınan iletiler hakkında farklı bilgiler almak için Exchange Yönetim Kabuğu'ndaki Get-MessageTrackingLog cmdlet'ini kullanabilirsiniz. Bu makalede, Exchange Server 2016/2013/2010 ve Office 365'te (Exchange Online) iletileri izlemek için sıklıkla kullandığım PowerShell tek satırlık komutlarının birkaç örneğini göstereceğim.
Size Exchange taşıma günlüklerinin şu dosyada bulunduğunu hatırlatmama izin verin:
%ExchangeInstallPath%TransportRoles\Logs\MessageTrackingdosya. Exchange'de mesaj izleme günlüklerini analiz etmenin en verimli ve esnek yolu, Get-MessageTrackingLog cmdlet'ini kullanmaktır.
Her şeyden önce, günlüklerdeki olayları filtrelemek için kullanabileceğiniz ana Get-MessageTrackingLog parametrelerini göz önünde bulundurun. Aşağıdaki cmdlet parametreleri en sık kullanılır:
- Sender
- gönderene göre arama;
- Recipients
-
— alıcıya göre arama;
- Server
- belirli aktarım sunucusunda arama yapın;
- Start “11/30/2019 08:00:00” -End “12/18/2019 21:00:00”
— belirli bir süreyi arayın;
- MessageSubject
— mesaj konusuna göre arama;
- EventID
- Exchange olayına göre arama (kural olarak, aşağıdaki kodlar kullanılır: AL, GÖNDER, FAIL, DSN, DELIVER, BADMAIL, RESOLVE, EXPAND, REDIRECT, TRANSFER, SUBMIT, ZEHİRLİ MESAJ, ERTELE);
- messageID
- bir mesaj kimliğine göre takip edin.
Get-MessageTrackingLog cmdlet'ini herhangi bir parametre olmadan çalıştırırsanız, son 30 güne ait Exchange taşıma günlüklerindeki tüm olaylar görüntülenir. Cmdlet yalnızca son 1.000 olayı görüntüler. Bu kısıtlamayı kaldırmak için,
-ResultSize Unlimitedparametre. (Aktarım sunucunuzdaki potansiyel olarak yüksek yük nedeniyle bazı ek filtre parametreleri olmadan yapmanız önerilmez.)
Bu komutu kullanarak Exchange olaylarınızla ilgili bilgileri sayfa sayfa görüntüleyebilirsiniz:
Get-MessageTrackingLog | Out-Host -Paging
Verileri tablo biçiminde görüntülemek ve sütun genişliğini ayarlamak için Format-Table cmdlet'i kullanılır:
Get-MessageTrackingLog | Format-Table -AutoSizeExchange organizasyonunuzda birden fazla Hub Transport sunucusu kullanılıyorsa, aranacak sunucunun adını sunucunun bağımsız değişkeni olarak belirtmeniz gerekecektir.
-Serverparametre . Veya Hub Transport sunucularınızın her biri için kanalla mesaj izleme komutunu çalıştırın:
Get-TransportServer | Get-MessageTrackingLogSon 24 saate ait tüm e-postaları görüntüleyelim (
(Get-Date).AddHours(-24)@gmail.com etki alanından bir alıcının belirtildiği:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.recipients -like "*@gmail.com"}Belirli bir kullanıcı tarafından belirli bir sunucu aracılığıyla belirli bir süre içinde gönderilen tüm e-postaları görüntülemek için aşağıdaki komutu kullanın (raporda yalnızca belirli izleme alanları görüntülenecektir):
Get-MessageTrackingLog -ResultSize unlimited -Sender "cmansion@a-d.site” -server rome-hub-01 -Start "11/30/2019 06:00:00" -End "12/13/2019 22:00:00" |select-object Timestamp,Sender,Recipients,MessageSubject,EventId|ftBir kullanıcının diğerine gönderdiği tüm e-postaları bulalım ve arama sonuçlarını bir CSV dosyasına aktaralım:
Get-MessageTrackingLog -Sender "cmansion@a-d.site" -Recipients "amorato@a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender,{$_.recipients},MessageSubject | Export-Csv -Path "C:\Export\exchange\exchange_tracking_logs.csv" -Encoding Default -Delimiter ";"Mesaj konusuna göre arama yapabilirsiniz. Konu alanında “test” kelimesi olan tüm e-postaları görüntülemek için aşağıdaki komutu çalıştırın. (Sonuçları uygun sıralama, filtreleme ve arama özelliklerine sahip bir tablo olarak ayrı bir grafik penceresinde görüntülemek için Out-gridview cmdlet'ini kullanabilirsiniz.)
Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview
Belirli mesaj kimliğine göre arama yapabilirsiniz (bunu Outlook'taki mesaj başlığından alabilirsiniz):
Get-MessageTrackingLog -messageID "41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubjectSon 7 günde belirli bir posta kutusuna gelen e-posta mesajlarının sayısını saymak için aşağıdaki komutu çalıştırın:
(Get-MessageTrackingLog -EventID "RECEIVE" -Recipients "amorato@a-d.site" -ResultSize unlimited).CountDaha ilgi çekici mesaj istatistiklerini görüntüleyebilirsiniz. Örneğin, farklı gönderenlerden kaç tane e-posta geldiğini görmek istiyorsunuz.
gmail.comson 5 gün içinde şirketinizin kullanıcıları tarafından alındı (her harici gönderen tarafından gönderilen toplam e-posta sayısını görüntüleyeceğiz):
Get-MessageTrackingLog -EventId "Receive" -Start (Get-Date).AddDays(-5) -ResultSize Unlimited | Where-Object {$_.Sender -like "*@gmail.com"} | Group-Object Sender | Sort-Object Count -Descending | Format-Table *Exchange kullanıcı posta kutularında saklanan e-postaları bulmak için Search-Mailbox cmdlet'ini kullanın.
Office 365, Exchange Yönetim Merkezi'nden (EAC) ileti izleme günlükleri araması yapmanıza olanak tanır. Posta Akışı -> İleti İzleme'ye gidin. Arama alanlarını doldurun. Bu aslında, kullanıcının basit bir web formunda PowerShell izleme komutu oluşturmasını sağlayan Get-MessageTrackingLog cmdlet'inin web arayüzüdür.
Yukarıda ele alınan yöntemler, Exchange sisteminizde gönderilen ve alınan iletilerin istatistiklerini almanıza ve farklı e-posta aktarım sorunlarını teşhis etmenize yardımcı olacaktır.