M365 Exchange Online Powershell

Exchange OnlineにPowerShellで接続し、メールの追跡のログを追いかける。

順番としては、

①”Connect-ExchangeOnline”コマンドでM365 Exchange Onlineに接続する。

②そのあと、 “Start-HistoricalSearch”で検索する。

という流れになります。

メモ

Connect-ExchangeOnline を実行してエラーとなる場合、ExchangeOnlineManagementモジュールが入っていないことが考えられます。

PowerShellを管理者権限で立ち上げて、次のインストールコマンドでインストールしてください。

Install-Module -Name ExchangeOnlineManagement

メッセージの追跡の考察

ExchangeOnlineのモジュールを入れたら、Connect-ExchangeOnlineコマンドで、M365のExchangeOnlineに接続します。

PS C:\Users\USER> Connect-ExchangeOnline

----------------------------------------------------------------------------------------
This V3 EXO PowerShell module contains new REST API backed Exchange Online cmdlets which doesn't require WinRM for Client-Server communication. You can now run these cmdlets after turning off WinRM Basic Auth in your client machine thus making it more secure.

Unlike the EXO* prefixed cmdlets, the cmdlets in this module support full functional parity with the RPS (V1) cmdlets.

V3 cmdlets in the downloaded module are resilient to transient failures, handling retries and throttling errors inherently.

However, REST backed EOP and SCC cmdlets are not available yet. To use those, you will need to enable WinRM Basic Auth.

For more information check https://aka.ms/exov3-module
----------------------------------------------------------------------------------------

Get-MessageTraceコマンドに、開始日と終了日を引数として渡して、ログを取得します。

PS C:\Users\USER> Get-MessageTrace -StartDate 07/10/2023 -EndDate 07/16/2023

Received           Sender Address                 Recipient Address Subject
--------           --------------                 ----------------- -------
2023/07/15 2:41:10 Office365Reports@microsoft.com xxx@xxx.net  Your requested メッセージ追跡レポート - ‎2023-07...
2023/07/14 4:00:58 csgate@microsoft.com           xxx@xxx.net  Welcome to the Azure OpenAI Service,  ...
2023/07/14 0:22:18 csgate@microsoft.com           xxx@xxx.net  Thank you for your request for access to Microso...

メールを取得した時刻について、Outlookと比較してみると、タイムゾーン分の+9時間ずれています。

日本時間に合わせて取得するためには、9時間のずれを考慮して時刻を指定したいです。

Get-MessageTraceコマンドのリファレンスによると、引数に日付だけでなく、時間も付けられるようです。

Get-MessageTrace (ExchangePowerShell) | Microsoft Learn

例えば、2023年7月14日のメールログを抜き出したいとは、次のようになります。

PS C:\Users\USER> Get-MessageTrace -StartDate "07/13/2023 03:00 PM" -EndDate "07/14/2023 02:59 PM"

Received           Sender Address       Recipient Address Subject
--------           --------------       ----------------- -------
2023/07/14 4:00:58 csgate@microsoft.com xxx@xxx.net  Welcome to the Azure OpenAI Service, ...
2023/07/14 0:22:18 csgate@microsoft.com xxx@xxx.net  Thank you for your request for access to Microsoft’s Azur...

得られたログの時間に、後処理で9時間加えてあげると日本時間にできます。

それはまた後程。

おまけ PowerShell Exchange Online モジュール インストール手順

Microsoftを始めたばかりの頃に意外とてこずるのが、PCにモジュールをインストールすること。

会社などでM365に接続するためのパソコンがあらかじめセットアップされて準備されていると、何もしなくてもつながるかもしれませんが、家などで自分で検証している場合は、パソコンにモジュールが入っていないので、自分でインストールする必要があります。

わたしの場合は、会社で誰もMicrosoft365の案件をやっていなかったころに、自分で調べてやっていたので、やり方がこれで本当にあっているのかとドキドキしながらやっていました。

さて、それでは手順になります。

Windowsの検索メニューに、PowerShellを入力し、管理者として実行するをクリックします。

管理者モードでPowerShellが立ち上がっていることを確認します。

※管理者モードでは、左上のウィンドウタイトルに、管理者と書かれています。

インストールコマンドを実行します。

Install-Module -Name ExchangeOnlineManagement

以上です。試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です