管理者をやっていると、ユーザのメールをエクスポートしたい場面があると思いますが、
今回はコンテンツ検索とPowerShellを使って、エクスポートしてみようと思います。
Microsoft Purviwe(コンプライアンスセンター)経由で、GUIからエクスポートも可能ですが、大量にやる場合には不向きなので、Powershellを利用したいと思います。
Powershellモジュールのインストール&インポート
Powershellを利用して、ExchangeOnlineのメールアイテムをエクスポートするには、Exchange用のPowershelモジュールのインストールが必要になります。
Step1. Powershellを管理者実行する
Step2. Install-Module -Name ExchangeOnlineManagement の実行
Step3. Import-Module ExchangeOnlineManagement の実行
eDiscovery Export Tool のインストール
PSTファイルなど、ファイルとしてローカルPCに保存するためには、専用のツールが必要になります。
https://learn.microsoft.com/ja-jp/microsoft-365/compliance/configure-edge-to-export-search-results?view=o365-worldwide
コンテンツの検索で、一度結果をエクスポートしてダウンロードする際に、ClickOnceを利用して、インストールが始まります。

Edgeから開く際には、確認画面が出るので、開くを選択

ClickOnceを利用した、インストール画面が表示されるので、インストールを選択

電子情報開示エクスポートツールが起動します。

アクセス許可の付与
検索したコンテンツをエクスポートするために、事前にeDiscovery Managerに権限を付与しておきます。
Microsoft Purview→ アクセス許可 → eDiscovery Manager→電子情報開示管理者
の導線でアクセス許可を付与します。

セキュリティ&コンプライアンスやEOPへの接続
Step1. Connect-IPPSSession -UserPrincipalName "UPN"
Step2. クレデンシャルの入力画面が求められるので、必要な権限を持ったユーザで認証。

コンテンツ検索の作成
コンテンツ検索を、Powershell上から実施するには、KQLを記載する必要があります。
コンテンツ検索におけるKQLは、公式が分かりやすいかも。
https://learn.microsoft.com/en-us/microsoft-365/compliance/keyword-queries-and-search-conditions?view=o365-worldwide
New-ComplianceSearch -Name “名前(わかるものであれば、なんでもいい)” -ExchangeLocation “検索したいメールボックス” -ContentMatchQuery ‘KQL’ で記載します。
↓適当な例New-ComplianceSearch -Name "All_mail_bcccollect" -ExchangeLocation bcc_collect@remakere.jp -ContentMatchQuery '(date=2021-10-01..2022-10-01) NOT ((from:remakere.jp) OR(from:microsoft.com))'
コンテンツ検索の開始
検索を作成しただけでは、実際に検索は開始はされないので、Start-ComplianceSearch -Identity "名前" で検索を実行します。
今回の例だと、下記のようになります。Start-ComplianceSearch -Identity "All_mail_bcccollect"
コンプライアンスセンターのコンテンツ検索のGUI上にも登録されています。

進捗状況の取得
コンテンツの検索は、すぐに終わるものではなく、検索が完了して初めてエクスポートが開始できます。
短いものだと、いいのですが、重たいものだと時間がかかるので、進捗状況を取得して検索が終わっていれば、エクスポートする必要があります。Get-ComplianceSearch -Identity "名前"

PSTファイルのエクスポート準備
下記のコマンドレットで、検索が完了した条件の、エクスポートが可能です。
New-ComplianceSearchAction -SearchName "名前" -Export

また、New-ComplianceSearchActionには、いくつかの引数があります。
-ExchangeArchiveFormat PerUserPstやSinglePst でPSTファイルをどうやって出力するか
-Format FxStream、Mim でPSTとして出力や、.emlファイルとして出力など設定が可能です。
https://learn.microsoft.com/ja-JP/powershell/module/exchange/new-compliancesearchaction?view=exchange-ps
Export用URLや、キーの取得
Get-ComplianceSearchAction "名前" -IncludeCredential
を利用することで、各種情報が取得可能です。IncludeCredentialは、取得のためのキーを取ってきます。
ここで、ややこしいのが、名前のところが、New-ComplianceSearchActionで設定したSearchNameではなく、Nameでの取得が必要です。

なんで、こんな形で出力されるのか、すごく微妙ですが、Get-ComplianceSearchActionのResultsの中に、Container urlと、SAS tokenがあります。

これらの情報を、電子情報開示エクスポートツールに読み込ませると、エクスポートが開始します。
実際に、PSTファイルとしてエクスポート
電子情報開示エクスポートツールをインストールして、何も引数与えないまま、起動しようとすると下記のような画面が表示されます。

exeファイルが、デフォルトでインストールされているパスは、下記で検索できます。$exportexe = ((Get-ChildItem -Path $($env:LOCALAPPDATA + "\Apps\2.0\") -Filter microsoft.office.client.discovery.unifiedexporttool.exe -Recurse).FullName | Where-Object{ $_ -notmatch "none" } | Select-Object -First 1)
のパスのため、Powershell上で、exeを引数付きで起動します。
(下記記事が、分かりやすい)
https://techcommunity.microsoft.com/t5/office-365/export-to-pst-via-powershell/m-p/95007/page/2
exeフィルに対して、-Name、-source にURL、-keyにSAS tokenを入力、-destで出力先を指定することでエクスポートが始まります。




コメント