当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

作者:精品下载站 日期:2024-12-14 20:06:51 浏览:16 分类:玩电脑

Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志


您可以使用 Exchange 命令行管理程序中的 Get-MessageTrackingLog cmdlet 来分析邮件流、邮件取证并获取有关电子邮件组织中特定邮箱发送或接收的邮件的不同信息。在本文中,我将展示几个 PowerShell 单行命令示例,我经常使用这些命令来跟踪 Exchange Server 2016/2013/2010 和 Office 365 (Exchange Online) 上的邮件。

让我提醒您,Exchange 传输日志位于

%ExchangeInstallPath%TransportRoles\Logs\MessageTracking

文件夹。分析 Exchange 中的邮件跟踪日志的最有效、最灵活的方法是使用 Get-MessageTrackingLog cmdlet。

首先,考虑可用于筛选日志中事件的主要 Get-MessageTrackingLog 参数。最常使用以下 cmdlet 参数:

Sender

- 按发件人搜索;

Recipients

— 按收件人搜索;

Server

- 搜索特定的传输服务器;

Start “11/30/2019 08:00:00” -End “12/18/2019 21:00:00”

— 搜索特定时间段;

MessageSubject

— 按消息主题搜索;

EventID

- 按 Exchange 事件搜索(通常使用以下代码:RECEIVE、SEND、FAIL、DSN、DELIVER、BADMAIL、RESOLVE、EXPAND、REDIRECT、TRANSFER、SUBMIT、POISONMESSAGE、DEFER);

messageID

- 通过消息 ID 进行跟踪。

如果运行不带任何参数的 Get-MessageTrackingLog cmdlet,则将显示过去 30 天内 Exchange 传输日志中的所有事件。该 cmdlet 仅显示最后 1,000 个事件。要删除此限制,请使用

-ResultSize Unlimited

范围。 (不建议在没有一些额外的过滤器参数的情况下执行此操作,因为传输服务器上的负载可能很高。)

您可以使用以下命令逐页显示有关 Exchange 事件的信息:

Get-MessageTrackingLog | Out-Host -Paging

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

要以表格格式显示数据并调整列宽,请使用 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:搜索 Exchange Server 上的邮件跟踪日志

要显示特定用户在给定时间段内通过特定服务器发送的所有电子邮件,请使用以下命令(报告中仅显示特定的跟踪字段):

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

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

让我们查找一个用户发送给另一个用户的所有电子邮件,并将搜索结果导出到 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-gridview cmdlet。)

Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

您可以通过特定的邮件ID进行搜索(您可以从Outlook中的邮件标题中获取它):

Get-MessageTrackingLog -messageID "[email protected]" -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

过去 5 天内贵公司的用户收到的电子邮件(我们将显示每个外部发件人发送的电子邮件总数):

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 *

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

要查找存储在 Exchange 用户邮箱中的电子邮件,请使用 Search-Mailbox cmdlet。

Office 365 允许您从 Exchange 管理中心 (EAC) 执行邮件跟踪日志搜索。转到邮件流->消息跟踪。填写搜索字段。这实际上是 Get-MessageTrackingLog cmdlet 的 Web 界面,它允许用户以简单的 Web 表单生成 PowerShell 跟踪命令。

[玩转系统] Get-MessageTrackingLog:搜索 Exchange Server 上的邮件跟踪日志

上述方法将帮助您获取 Exchange 系统中发送和接收邮件的统计信息,并诊断不同的电子邮件传输问题。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯