PowerShell Get-MessageTrace 命令可幫助 Office 365 管理員追蹤郵件傳遞和處理情況,以確保郵件能夠正確投遞到用戶的郵箱中。在本文中,我將展示如何使用 Get-MessageTrace 命令來管理和分析 Office 365 中的郵件追蹤。
使用 PowerShell Get-MessageTrace 與 Exchange Online
Get-MessageTrace cmdlet 是管理員在 Exchange Online 中分析和管理郵件流量的默認方法。然而,這個 PowerShell 命令僅在 Exchange Online(Office 365 的一部分)環境中可用。
在 Exchange 的本地環境中,Get-MessageTrace PowerShell 命令不可用,您的替代方案是 Get-MessageTrackingLog cmdlet。 Get-MessageTrace PowerShell 命令提供了與本地對應項相似的功能,但該 cmdlet 專門設計用於基於雲的 Office 365 環境。
Exchange 本地 vs. Exchange 在線消息追踪:主要區別
- 環境: Exchange 本地處理組織自己的伺服器,而 Exchange 在線是由 Microsoft 提供的基於雲的服務。
- 整合: 在 Exchange 在線中,Get-MessageTrace 命令與 Office 365 的安全性和合規性功能無縫整合,而在本地環境中,必須使用 Get-MessageTrackingLog cmdlet。
- 驗證: 由於 Exchange 在線的基於雲的性質,驗證方法和 PowerShell 會話的管理方式有所不同。
- 可擴展性: Exchange 在線的可擴展性設計用於處理大量電子郵件工作負載,無需本地硬體升級。
連線至 Exchange Online
這裡有一個快速提醒:要使用任何 Exchange Online cmdlet,您需要在 Office 365 環境中建立遠端 PowerShell 會話。打開 Windows PowerShell 並執行以下命令。
Connect-ExchangeOnline

這樣,您已經熟悉了,對吧?如果您需要更多關於連線所需的先決條件的幫助,請閱讀我之前關於 如何連線至 Exchange Online 的文章。
使用具有特定日期範圍的 Get-MessageTrace
在特定日期範圍內分析電子郵件流量是一項常見的管理任務。 Get-MessageTrace cmdlet 可讓您根據電子郵件的創建或傳遞日期篩選和查看電子郵件。請注意,此 PowerShell 命令可以訪問的歷史記錄最多為 10 天。如果您需要調查 10 天前之前的電子郵件流量,您將需要使用 Exchange 管理中心網站 並運行長時間段的訊息追蹤。
這是一個逐步指南,說明如何使用 Get-MessageTrace cmdlet 搜索特定日期範圍內的訊息。
過去 x 分鐘
‘StartDate’參數用於指定您要搜索的時間範圍。您可以輸入日期(最多可達 10 天)。但是,您也可以包含時間。請務必將您的日期/時間範圍括在引號中(“”)。
讓我們試試使用 Get-MessageTrace cmdlet 來搜索過去 90 分鐘內的電子郵件:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.
您也可以使用一個更高級的 PowerShell 命令向後退 45 分鐘,方法如下:
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
讓我發送幾封電子郵件,這樣您就可以看到輸出如何在您的環境中運作。
過去 x 小時
現在,這很重要 – Exchange Online 幾乎肯定會記錄電子郵件的傳送時間為 UTC!因此,我需要調整我的結束日期時間,我會向您展示如何做到這一點。
讓我們搜索過去的 8 或 9 小時:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

就是這樣!這顯示了來自另一個帳戶發送給我的主要全域管理員帳戶的電子郵件。當我打這個字時,我發送了電子郵件大約在下午 12:15(CDT)。但是,UTC 是提前 5 小時的。這就是為什麼電子郵件行報告傳遞時間為下午 5:16(UTC)。請記住這個時差!
過去 x 天
雖然我沒有任何電子郵件傳送歷史記錄,但我仍然可以向您顯示命令。如果您想顯示通過 Exchange Online 處理的所有電子郵件,只需包含日期即可。
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

這樣。 因為我在這個租戶中配置了Azure AD Connect Cloud Sync,我每週都會收到一封包含狀態更新的郵件。 該郵件是在2023年8月8日發送的。
再次提醒,您只能搜索最多10天。 如果您需要更進一步了解以前的情況,您需要使用Exchange管理員中心網站上的消息跟踪功能。 在那裡,您可以發出請求,最多可返回90天。
使用Get-MessageTrace按發送者電子郵件地址搜索
識別特定發件人發送的郵件可能對各種目的至關重要,例如調查通信模式或解決安全問題。 透過Get-MessageTrace cmdlet,您可以搜索特定電子郵件地址的消息跟踪。
以下是如何使用“-SenderAddress”參數搜索特定發件人的消息跟踪:
Get-MessageTrace -SenderAddress "[email protected]"

很酷,又多了一个。非常直观。而且,一个很好的提示 – 如果你将结果导入到 Format-List cmdlet,你将获得一个包括交付状态、消息 ID、消息跟踪 ID、发件人地址、收件人地址等等的综合摘要。

使用 Get-MessageTrace 按收件人电子邮件地址搜索
跟踪发送给特定收件人的电子邮件是管理员的另一个基本任务。无论您是管理电子邮件传送还是确保敏感信息发送给正确的人,按收件人电子邮件地址搜索的能力都是无价的。
让我们来举个例子,这里我们将搜索所有发送到…我的电子邮件的邮件:
Get-MessageTrace -RecipientAddress "[email protected]"

这显示了发送到我的电子邮件地址的 3 封电子邮件消息。另外,顺便说一句,如果你不包括任何与时间相关的参数,它将报告过去 48 小时的情况。
您可以使用 Get-MessageTrace 按电子邮件主题搜索吗?
很抱歉,您無法使用 Get-MessageTrace 命令按主題進行搜索。為此需求,您將需要使用 Microsoft Purview 並創建一個 eDiscovery(內容)搜索。您可以在我們關於 eDiscovery 的先前文章中找到更多信息。
使用 Get-MessageTrace 按來源和目的地 IP 地址進行搜索
您還可以使用 Get-MessageTrace 命令按來源和目的地 IP 地址進行搜索。這使您可以根據發送和接收服務器的 IP 地址跟踪電子郵件消息。這對於診斷交付問題、識別可疑活動以及了解消息通過電子郵件基礎設施的路徑非常有用。
在這裡,我們還可以使用 ‘-ToIP’ 和 ‘-FromIP’ 參數。例如,如果我們想搜索所有來自 44.42.2.55 來源 IP 並且我們邊緣防火牆的公共 IP 101.3.2.88 以接收電子郵件,我們可以使用以下命令作為示例。
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

再次,我這裡沒有很酷的內容可以展示給您,但它有效。真的,它有效。
如何使用通配符和部分匹配
您還可以使用
Get-MessageTrace -SenderAddress *@gmail.com
看,這樣做非常容易。您也可以對收件人進行相同操作。如果您想查看所有發送至以字母“m”開頭的電子郵件地址的收件人的郵件,請嘗試以下命令:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
同樣,這非常直接。
如何使用Get-MessageTraceDetail獲取更詳細的結果
如果您希望擴展自
首先,我將運行
Get-MessageTrace | fl

這裡,我們可以看到過去48小時內4封電子郵件的更多細節。所以,我們可以做的是從第二封電子郵件中獲取郵件追踪 ID 和收件人地址,並使用以下命令:
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

這裡,我們可以看到構成從互聯網到 Megan 實際 Exchange 郵箱的電子郵件接收和傳遞的3個事件。這裡提供了非常詳細的信息。這可能顯示郵件是直接傳遞到用戶的垃圾郵件文件夾,還是自動轉發到另一個內部(或外部)郵箱。總的來說,這對 IT 專業人員和 Exchange 管理員來說是非常有用的信息。
如何將結果導出到 CSV 文件
往往您會運行報告許多記錄的搜索。您肯定會想使用 Excel 來分析和篩選結果。要做到這一點,只需通過 Export-CSV 命令將結果導出,就像這樣:
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

這只花了幾秒鐘。非常好!
如何使用 Group-Object 執行高級搜索
您可以使用 Group-Object 命令來更高層次地查看郵件傳遞情況。
最活躍的郵件發送者
您可以使用以下命令查找在過去7天內發送最多郵件的使用者。讓我展示給您這個命令,然後我會解釋它。
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

這裡,我們首先收集過去10天內處理的所有郵件列表。然後,我們將該輸出使用 Group-Object 命令,使用 ‘SenderAddress’ 屬性,獲取計數(郵件數量),並按最高數量進行排序。
接收最多郵件的收件人
同樣地,我們可以通過運行相同的命令並將 ‘SenderAddress’ 屬性替換為 ‘RecipientAddress’,非常迅速地收集過去10天內接收最多郵件的使用者。讓我們看看發生了什麼:
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.
Get-MessageTrace 命令提供了靈活性和控制
無論您需要在特定日期範圍內進行搜索,識別特定寄件者的消息跡象,還是跟蹤發送給特定收件人的消息跡象,Get-MessageTrace cmdlet提供了您所需的靈活性和控制。此外,將結果導出為CSV文件的能力增強了您分析和記錄電子郵件通信模式的能力。通過掌握Get-MessageTrace cmdlet的使用,您可以有效地管理電子郵件流量,並獲得有價值的洞察力,了解您組織的通信活動。