Office 365でPowerShell Get-MessageTraceコマンドを使用する方法

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のメッセージトレース: 主な違い

  1. 環境: Exchangeオンプレミスは組織の独自のサーバーを扱いますが、Exchange OnlineはMicrosoftが提供するクラウドベースのサービスです。
  2. 統合: Exchange Onlineでは、Get-MessageTraceコマンドがOffice 365のセキュリティとコンプライアンス機能にシームレスに統合されますが、オンプレミス環境ではGet-MessageTrackingLog cmdletを使用する必要があります。
  3. 認証: クラウドベースのExchange Onlineの性質により、認証方法とPowerShellセッションの管理が異なります。
  4. 拡張性: Exchange Onlineの拡張性は、オンプレミスのハードウェアのアップグレードを必要とせずに大規模なメールワークロードを処理できるように設計されています。

Exchange Online に接続する

簡単なメモをいくつか残しましょう:Exchange Online の cmdlet を使用するには、Office 365 環境との远隔 PowerShell 会话を立てなければならない。Windows PowerShellを開いて、以下のコマンドを実行してください。

Connect-ExchangeOnline
Using Connect-ExchangeOnline to get connected to your tenant (Image credit: Petri/Michael Reinders)

そう、お馴染みですか?接続するために必要な前提条件についても少しの助けが必要であれば、私の前の投稿を読むことができます。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"
Using the Get-MessageTrace cmdlet to trace email message flow (Image credit: Petri/Michael Reinders)

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"
We need to use UTC times when computing our search window! (Image credit: Petri/Michael Reinders)

これで完了です!これにより、別のアカウントから私のメインのGlobal Administratorアカウント宛に送られた電子メールが表示されます。この時点では、12:15 PM(CDT)頃に電子メールを送信しましたが、UTCは5時間進んでいます。これが、電子メールの行が配信時刻を17:16(UTC)と報告している理由です。この時間差を念頭に置いてください。

過去のx日間

電子メールの配信履歴はありませんが、コマンドを示すことはできます。Exchange Onlineを介して処理されたすべての電子メールを表示する場合は、日付を単純に含めるだけで可能です。

Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023
We can go back a maximum of 10 days with PowerShell! (Image credit: Petri/Michael Reinders)

この租庸にはAzure AD Connect Cloud Syncが設定されているため、私は每周ステータス更新が含まれた電子メールを受け取ることができます。この電子メールは2023年8月8日に送信されました。

再び、覚えておいてください、過去10日以内のものしか搜索できません。過去の日付をさらに探索する必要がある場合は、Exchange Admin Centerのウェブサイトでメッセージトレース機能を使用する必要があります。そこで、最大90日の過去に遡るリクエストを作成できます。

送信者の電子メールアドレスによるGet-MessageTraceの使用

特定の送信者から送信されたメッセージを特定することは、通信パターンの調査やセキュリティの心配を解決など、様々な目的で重要です。Get-MessageTraceコマンドレットは、特定の電子メールアドレスからのメッセージトレースを検索することができます。

以下は、特定の送信者からのメッセージトレースを search するために `-SenderAddress` パラメーターを使用する方法です。

Get-MessageTrace -SenderAddress "[email protected]"
We can use ‘SenderAddress’ to narrow things down (Image credit: Petri/Michael Reinders)

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

We can use Format-List to get even more details (Image credit: Petri/Michael Reinders)

Get-MessageTraceを使用して受信者の電子メールアドレスに基づいて搜索する

特定の受信者宛に送信された電子メールを追跡することは、管理者の基本的な任务です。電子メールの配信管理を行い、または機密情報が正しい人に届けられることを保証するには、受信者の電子メールアドレスに基づいて搜索することが非常に重要です。

例を使いましょう。ここでは、以下のように宛先をsearchします……私(me):

Get-MessageTrace -RecipientAddress "[email protected]"
We can also narrow things down by recipients of email (Image credit: Petri/Michael Reinders)

これは、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"
You can also search by IP addresses amongst the SMTP servers in question (Image credit: Petri/Michael Reinders)

ここにはすごく面的なコンテンツがありませんが、機能しています。本当に機能しています。

ワイルドカードと部分一致を使用する方法

あなたはワイルドカード文字を使って効率的に結果を絞り込むこともできます。例えば、セキュリティやコンプライアンスの理由から、コンプライアンス担当者が過去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
We can get more detail with the ‘Format-List’ (fl) cmdlet (Image credit: Petri/Michael Reinders)

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

Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]
Using Get-MessageTraceDetail to get line-by-line detail for specific email messages (Image credit: Petri/Michael Reinders)

ここで、インターネットからメーガンの実際の exchanges 邮箱にメールメッセージを受信と配信する3つのイベントを見ることができます。ここには、メッセージが直接ユーザーのスパム邮箱に配信されたか、または、別の内部(または外部)邮箱に自動転送されたかどうかを示すことができます。これは、ITプロやExchange管理者にとって非常に有用な情報です。

結果をCSVファイルにエクスポートする方法

よくは、多くの記録を報告する検索を実行することになります。結果を分析し、絞り込むためにはExcelを使用する必要があります。これを行うために、結果をExport-CSVコマンドを介してパイプラインにかけるだけです。例えば以下のように:

Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv
Exporting output to a CSV file (Image credit: Petri/Michael Reinders)

これはたった数秒で完了しました。素晴らしいですね!

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
We can find the most active senders with some more PowerShell piping! (Image credit: Petri/Michael Reinders)

ここで、過去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
Similarly, we can find the users receiving the most email (Image credit: Petri/Michael Reinders)

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

Source:
https://petri.com/powershell-get-messagetrace/