Get-MessageTrackingLog:在Exchange服务器上搜索邮件跟踪日志
我们可以在Exchange命令行管理程序中使用Get-MessageTrackingLogcmdlet来分析邮件流、邮件取证,并获取有关电子邮件组织中特定邮箱发送或者接收的邮件的不同信息。在本文中,我将展示几个PowerShell one liner命令的示例,我经常使用这些命令来跟踪Exchange Server 2015/2013/2010和Office 365(Exchange Online)上的邮件。
Exchange传输日志位于
%ExchangeInstallPath%TransportRoles\Logs\MessageTracking
文件夹。而在Exchange中分析邮件跟踪日志的最有效、最灵活的方法是使用Get-MessageTrackingLog cmdlet。
首先,考虑可以用来过滤日志中事件的getmessagetrackinglog主参数。以下cmdlet参数最常使用:
发送方——按发送方搜索;
接收人——按接收人搜索;
服务器——在特定传输服务器上搜索;
开始“11/30/2019 08:00:00”
-结束“12/18/2019 21:00:00”—搜索具体时间段;
消息主题——按消息主题搜索;
事件ID–按交换事件搜索(通常使用以下代码:接收、发送、失败、DSN、传递、死信、解析、展开、重定向、传输、提交、中毒消息、延迟);
消息ID–通过消息ID跟踪。
如果不带任何参数运行Get-MessageTrackingLog cmdlet,则将显示过去30天内来自Exchange传输日志的所有事件。cmdlet仅显示最近1000个事件。要删除此限制,请使用
–ResultSize Unlimited
参数。(由于传输服务器的负载可能很高,因此不建议在没有其他筛选器参数的情况下执行此操作。)
可以使用以下命令逐页显示有关Exchange事件的信息:
Get-MessageTrackingLog | Out-Host –Paging
要以表格格式显示数据并调整列宽,请使用format table cmdlet:
Get-MessageTrackingLog | Format-Table –AutoSize
如果Exchange组织中使用多个集线器传输服务器,则需要指定要搜索的服务器的名称作为
–Server
参数。或者使用管道为每个集线器传输服务器运行邮件跟踪命令:
Get-TransportServer | Get-MessageTrackingLog
让我们显示过去24小时的所有电子邮件(
(Get-Date).AddHours(-24)
),其中收件人来自@gmail.com网站指定的域:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string**$_.recipients -like "*@gmail.com"}
要显示特定用户在给定时间段内通过特定服务器发送的所有电子邮件,请使用以下命令(报告中将只显示特定的跟踪字段):
Get-MessageTrackingLog -ResultSize unlimited –Sender "[email protected]" –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|ft
让用户将所有发送到CSV的邮件导出到另一个文件中:
Get-MessageTrackingLog -Sender "[email protected]" -Recipients "[email protected]" -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 ";"
我们可以按邮件主题进行搜索。要显示主题字段中带有“test”单词的所有电子邮件,请运行以下命令。(要在单独的图形窗口中将结果显示为具有方便的排序、筛选和搜索功能的表,可以使用Out gridviewcmdlet。)
Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited –server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview
我们可以按特定的邮件ID进行搜索(可以从Outlook的邮件头获取):
Get-MessageTrackingLog -messageID "41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.theitroad.local" -ResultSize unlimited –server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject
要统计过去7天内特定邮箱的传入电子邮件数,请运行以下命令:
(Get-MessageTrackingLog -EventID "RECEIVE" -Recipients "[email protected]" -ResultSize unlimited).Count
我们可以显示更多的替代消息统计信息。例如,我们想查看来自
gmail.com