PowerShellのGet-MessageTraceコマンドは、Office 365管理者がユーザーのメールボックスに届かない可能性のある電子メールメッセージの配信と処理を追跡するのに役立ちます。この記事では、Get-MessageTraceコマンドを使用してOffice 365で電子メールメッセージトレースを管理および分析する方法を紹介します。
Exchange OnlineでPowerShell Get-MessageTraceを使用する
Get-MessageTraceコマンドレットは、管理者がExchange Online内で電子メールトラフィックを分析および管理するためのデフォルトの方法です。ただし、このPowerShellコマンドはOffice 365のExchange Online環境でのみ利用可能です。
Exchangeのオンプレミス環境では、Get-MessageTrace PowerShellコマンドは使用できず、代替としてGet-MessageTrackingLog cmdletを使用します。Get-MessageTrace PowerShellコマンドは、オンプレミス環境と同様の機能を提供しますが、このcmdletは特にクラウドベースのOffice 365環境向けに設計されています。
オンプレミスのExchangeとExchange Onlineのメッセージトレース: 主な違い
- 環境: Exchangeオンプレミスは組織の独自のサーバーを扱いますが、Exchange OnlineはMicrosoftが提供するクラウドベースのサービスです。
- 統合: Exchange Onlineでは、Get-MessageTraceコマンドがOffice 365のセキュリティとコンプライアンス機能にシームレスに統合されますが、オンプレミス環境ではGet-MessageTrackingLog cmdletを使用する必要があります。
- 認証: クラウドベースのExchange Onlineの性質により、認証方法とPowerShellセッションの管理が異なります。
- 拡張性: Exchange Onlineの拡張性は、オンプレミスのハードウェアのアップグレードを必要とせずに大規模なメールワークロードを処理できるように設計されています。
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"

これで完了です!これにより、別のアカウントから私のメインのGlobal Administratorアカウント宛に送られた電子メールが表示されます。この時点では、12:15 PM(CDT)頃に電子メールを送信しましたが、UTCは5時間進んでいます。これが、電子メールの行が配信時刻を17: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 Admin Centerのウェブサイトでメッセージトレース機能を使用する必要があります。そこで、最大90日の過去に遡るリクエストを作成できます。
送信者の電子メールアドレスによるGet-MessageTraceの使用
特定の送信者から送信されたメッセージを特定することは、通信パターンの調査やセキュリティの心配を解決など、様々な目的で重要です。Get-MessageTraceコマンドレットは、特定の電子メールアドレスからのメッセージトレースを検索することができます。
以下は、特定の送信者からのメッセージトレースを search するために `-SenderAddress` パラメーターを使用する方法です。
Get-MessageTrace -SenderAddress "[email protected]"

面白いです、もう一つあります。直感的です。そして、素晴らしい技巧です——結果をFormat-List cmdletにパイプして、配信状態、メッセージID、メッセージトレースID、送信者アドレス、受信者アドレスなどを含む優れた結果のサマリーを取得することができます。

Get-MessageTraceを使用して受信者の電子メールアドレスに基づいて搜索する
特定の受信者宛に送信された電子メールを追跡することは、管理者の基本的な任务です。電子メールの配信管理を行い、または機密情報が正しい人に届けられることを保証するには、受信者の電子メールアドレスに基づいて搜索することが非常に重要です。
例を使いましょう。ここでは、以下のように宛先をsearchします……私(me):
Get-MessageTrace -RecipientAddress "[email protected]"

これは、tenantにおいて私の電子メールアドレス宛てに送信された3件の電子メール消息を示しています。ところで、時間に関連した Parameterを含まない場合、過去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"

ここにはすごく面的なコンテンツがありませんが、機能しています。本当に機能しています。
ワイルドカードと部分一致を使用する方法
あなたはワイルドカード文字を使って効率的に結果を絞り込むこともできます。例えば、セキュリティやコンプライアンスの理由から、コンプライアンス担当者が過去48時間以内にGmailから処理されたすべての電子メールの記録を見たいと言ったとしましょう。簡単です!
Get-MessageTrace -SenderAddress *@gmail.com
見てください、とても簡単です。同じように受信者についても同じことができます。メールアドレスが「m」で始まるすべての受信者に配信されたすべての電子メールを見たい場合は、次のコマンドを試してみてください:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
同様に、非常に簡単です。
Get-MessageTraceDetailで詳細な結果を取得する方法
Get-MessageTraceコマンドの出力を拡張したい場合、Get-MessageTraceDetailコマンドレットを使用すると、電子メールのトランザクションにおける個々の処理と配信イベントが表示されます。以下で示します。
まず、Get-MessageTraceコマンドレットを実行し、それを ‘Format-List’ (fl) コマンドにパイプして詳細を取得します。
Get-MessageTrace | fl

ここで、過去48時間の最後の4件の電子メールメッセージについてより詳細な情報を見ることができます。私たちがすることは、2番目の電子メールからメッセージトレースIDと宛先アドレスを取得し、以下のコマンドを使用することです。
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

ここで、インターネットからメーガンの実際の exchanges 邮箱にメールメッセージを受信と配信する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 の使用をマスターすることで、効果的に電子メールトラフィックを管理し、組織のコミュニケーション活動に貴重な洞察を得ることができます。