社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Office365参考書】コンテンツの検索をPowershellで実行するには?エクスポートはできない?

f:id:it-bibouroku:20200305151118j:plain

今回は、以下の記事でもご紹介しております"コンテンツの検索"について、Powershellのコマンドレットで実行する手順についてご紹介したいと思います。

 

ルールの作成やプレビューやエクスポートの準備などは通常のコマンドレットでできますが、PSTのエクスポートについてはスクリプトで実行することで可能です

 

 

it-bibouroku.hateblo.jp

 

 

 

まずは、以下のコマンドレットを順に実行し、セキュリティ コンプライアンスセンターへ接続します。 

あらかじめ、Windows PowerShell にて 管理者のサインイン ID で セキュリティ/コンプライアンスセンターへ接続を実施します。 

  1. Windows PowerShellを起動します。
  2. 接続のために以下のコマンドレットを順に実行します。

   2-1. 

   $LiveCred = Get-Credential 

        ※ ここで資格情報の確認が表示されますので、Office 365 の全体管理者権限のあるアカウントのサインイン ID とパスワードを入力します。 

   2-2. 

   $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection 

   ※ 上記コマンドは 1 行のコマンドレットです。改行せずに実行してください。 

    

   2-3.  

   Import-PSSession $Session 

   ※ 警告が表示されますが、正常に接続されている証拠ですので問題ございません。 

   

  

コンテンツの検索を利用するためには、管理者であっても、eDiscovery Manager の権限を付与する必要がありますので、以下のコマンドレットを順に実行します。 

  

Add-RoleGroupMemberの実行

[構文] 

Add-RoleGroupMember "eDiscovery Manager" -Member "追加するメンバーのメールアドレス" 

[実行例] 

Add-RoleGroupMember "eDiscovery Manager" -Member "User01@contoso.com

※ 上記コマンドレッの実行にて、[電子情報開示マネージャーの付与となります。 

  

[電子情報開示管理者の権限を付与するには、続けて次のコマンドレットを実行します。 

  

Add-eDiscoveryCaseAdminの実行

上記項番 1 で設定したユーザーを登録します 

[構文] 

Add-eDiscoveryCaseAdmin -User "[電子情報開示マネージャー] 権限のあるユーザーのメール アドレス" 

[実行] 

Add-eDiscoveryCaseAdmin -User "User01@contoso.com

※ 権限が反映されて、コンテンツの検索をご利用できるまで少々時間を要する場合があります。 

 

 

検索ルールの作成

[概要] 

New-ComplianceSearch コマンドレットを使用して、セキュリティ センターとコンプライアンス センター でコンプライアンス検索を作成します。このコマンドレットを使用して検索条件を定義します。 

  

[構文] 

  New-ComplianceSearch -Name "検索の名前" -ExchangeLocation "検索に含めるメールボックス" -ContentMatchQuery "クエリ指定の条件" 

  

[実行例] 

  New-ComplianceSearch -Name "Test-ComplianceSearch" -ExchangeLocation "All" -ContentMatchQuery "subject:'業務'"

  

 -ExchangeLocation "All" により、全メールボックスを指定しています。 

  

 ContentMatchQuery (検索フィルターについて 

ContentMatchQuery パラメーターは、コンテンツの検索フィルターを指定します。 

このパラメーターには、テキストの検索文字列、またはキーワード クエリ言語 (KQL) によって書式設定されたクエリを使用します。 

  

<検索フィルターの指定例> 

  1. 件名をキーワードとした検索

  -ContentMatchQuery "subject:'業務'" 

  

  1. 特定アドレスから送信されたアイテムの検索

  -ContentMatchQuery "from:user001@contoso.com" 

  

  1. 特定期間を指定した検索

※ 下記例では、2018/10/01 から 2018/10/10 の期間に送受信や作成されたアイテムを対象とします。 

  -ContentMatchQuery "date=2018-10-01..2018-10-10" 

  

  1. 複数条件の指定

  -ContentMatchQuery "subject:'業務' AND from:user001@contoso.com AND date=2018-10-01..2018-10-10" 

  

例:シングルクォーテーションで条件を括る 

'(date=2018-10-01..2018-10-10) AND (kind="email")' 

  

コンプライアンス検索の開始 

[概要] 

コンプライアンス検索を開始します。

 

[構文] 

  Start-ComplianceSearch -Identity "コンプライアンス検索の名前" 

[実行例] 

  Start-ComplianceSearch -Identity "Test-ComplianceSearch" 

  

検索ルールの進捗状況の確認

[概要] 

New-ComplianceSearchAction コマンドレットを使用してコンプライアンス検索のプレビュー アクションを定義した後で、Get-ComplianceSearchAction コマンドレットを使用して、コンプライアンス検索の進捗状況を表示します。 

  

[構文] 

  Get-ComplianceSearch -Identity "検索ルールの名前" 

  

[実行例] 

  Get-ComplianceSearch -Identity "Test-ComplianceSearch" 

  

[結果表示例] 

  Name                    RunBy               JobEndTime          Status 

  ----                    -----               ----------          ------ 

  Test-ComplianceSearch   admin               2018/10/01 11:46:21 Completed 

  

正常に処理が終了している場合、Status  "Completed" と表示されます。 

  

コンテンツの検索のプレビューを出力

[概要] 

検索ルールにて検索した結果をプレビューとしてCSVファイルに出力します。

 

[構文] 

New-ComplianceSearchAction -SearchName "検索ルール名" -Preview | Export-CSV -Encoding UTF8 -Path <ファイルパス\ファイル名>.csv -NoTypeInformation 

  

[実行例]

New-ComplianceSearchAction -SearchName "test" -Preview | Export-CSV -Encoding UTF8 -Path C:\temp\Mailbox.csv -NoTypeInformation 

  

[出力できる情報]

Location : 受信者 

Sender : 送信者 

Subject : 件名 

Type : 種類 

Size : サイズ 

Received Time : 受信日時 

 

コンテンツの検索のエクスポートの準備 

[概要] 

PSTにエクスポートする準備をおこないます。

 

<構文> 

New-ComplianceSearchAction -SearchName "検索ルール名" -Export  

 

<実行例> 

New-ComplianceSearchAction -SearchName "test" -Export 

  

※再度、同じコマンドレットを実行することでStatusの値から完了したか確認が可能です。 

実行後は、Starting、完了後はCompletedとなることを確認しております。 

 

PST ファイルへの出力 

 

 [概要] 

電子情報開示エクスポート ツールが表示され、エクスポートキーとダウンロード場所を指定することでPSTファイルにエクスポートされます。

なお、コマンドレットを実行することで、自動的にエクスポートキーがコピーされた状態となるため、そのままエクスポートキーの欄に張り付けてください。 

  

<構文> 

$export=Get-ComplianceSearchAction "エクスポートする検索ルール名" -IncludeCredential; 

$exportUrl=[System.Uri]::EscapeDataString( ($export.Results.Split(";") | ?{$_ -like '*Container url*'} | %{$_.Split(":",2)} | select -last 1).Trim() ); 

$exportToken=($export.Results.Split(";") | ?{$_ -like '*SAS Token*'} | %{$_.Split(":",2)} | select -last 1).Trim(); 

."$env:ProgramFiles\Internet Explorer\IEXPLORE.EXE" "https://complianceclientsdf.blob.core.windows.net/v16/Microsoft.Office.Client.Discovery.UnifiedExportTool.application?name=$($export.Name)&source=$exportUrl&zip=allow&trace=1"; 

$exportToken | clip;

  

<実行例> 

$export=Get-ComplianceSearchAction "123_Export" -IncludeCredential; 

$exportUrl=[System.Uri]::EscapeDataString( ($export.Results.Split(";") | ?{$_ -like '*Container url*'} | %{$_.Split(":",2)} | select -last 1).Trim() ); 

$exportToken=($export.Results.Split(";") | ?{$_ -like '*SAS Token*'} | %{$_.Split(":",2)} | select -last 1).Trim(); 

."$env:ProgramFiles\Internet Explorer\IEXPLORE.EXE" "https://complianceclientsdf.blob.core.windows.net/v16/Microsoft.Office.Client.Discovery.UnifiedExportTool.application?name=$($export.Name)&source=$exportUrl&zip=allow&trace=1"; 

$exportToken | clip;

 

 

以下は補足ですが、検索の実行を停止する場合と検索ルールの削除のコマンドレットをご紹介します。

 

 

コンプライアンス検索の実行を停止

[概要] 

コンプライアンス検索の実行を停止します。 

 

[構文] 

  Stop-ComplianceSearch -Identity "コンプライアンス検索の名前" 

 

[実行例] 

  Stop-ComplianceSearch -Identity "Test-ComplianceSearch" 

※ タスクが実行されている状況下でのみ使用可能です。

  

検索ルールの削除

[概要] 

コンプライアンス検索を削除します。検索は停止または完了する必要があります。 

 

[構文] 

  Remove-ComplianceSearch -Identity "コンプライアンス検索の名前" 

 

[実行例] 

  Remove-ComplianceSearch -Identity "Test-ComplianceSearch" 

  

また、フィルター設定をおこなうことで、Exchange Online のメールボックスの検索を禁止やSharePoint Online の検索を禁止する設定もできますので、あわせてご紹介します。

 

Exchange Online のメールボックスの検索を禁止する手順 

<構文> 

New-ComplianceSecurityFilter -FilterName <フィルター名> -Users <操作を禁止する対象ユーザーのメールアドレス> -Filters "Mailbox_Alias -Notlike '*'" -Action All 

  

<実行例> 

New-ComplianceSecurityFilter -FilterName "NoEXO" -Users user@contoso.com -Filters "Mailbox_Alias -notlike '*'" -Action All 

  

 

SharePoint Online の検索を禁止する手順 

<構文> 

New-ComplianceSecurityFilter -FilterName <フィルター名> -Users <操作を禁止する対象ユーザーのメールアドレス> -Filters "Site_Path -Notlike 'https://<テナントドメイン>.sharepoint.com*'" -Action All 

  

<実行例> 

New-ComplianceSecurityFilter -FilterName NoSPO -Users "User@contoso.com" -Filters "Site_Path -notlike 'https://contoso.sharepoint.com*'" -Action All