複数のコンテンツ検索の作成、レポート、削除

基になるデータや、検索の充実した機能や品質について学習しようとしている際には、多くの場合、探索検索をすばやく作成し、レポートすることが電子情報開示や調査で重要な手順になります。Office 365 セキュリティ/コンプライアンス センター では、時間のかかるコンテンツ検索タスクを自動化するための Windows PowerShell コマンドレットのセットが提供されます。これは、上記の操作を実行するのに役立ちます。これらのスクリプトを使えば、多くの検索をすばやく簡単に作成し、対象のデータ量を決定するのに役立つ予測の検索結果のレポートを実行できます。また、スクリプトを使って、さまざまなバージョンの検索を作成し、生成された結果をそれぞれ比較することもできます。これらのスクリプトは、データをすばやく効率的に識別して選別するのに役立ちます。

このトピックには、複数の検索を作成、開始、レポート、および削除するために実行できるスクリプトが含まれます。そのプロセスの概要を以下に示します。

手順 1:実行する検索に関する情報を含む CSV ファイルを作成する

手順 2:リモート PowerShell を使ってセキュリティ/コンプライアンス センターに接続する

手順 3:スクリプトを実行し、検索を作成して開始する

手順 4:スクリプトを実行して、検索見積もりをレポートする

手順 5:スクリプトを実行して、検索を削除する

始める前に

  • このトピックで説明されているスクリプトを実行するには、セキュリティ/コンプライアンス センター の電子情報開示マネージャーの役割グループのメンバーである必要があります。

  • 手順 1 で CSV ファイルに追加できる、組織内の OneDrive for Business サイトの URL リストを収集するには、「OneDrive for Business サイトに対する電子情報開示のアクセス許可を割り当てる」で手順 2 のスクリプトを使います。このスクリプトでは、すべての OneDrive for Business サイトのリストを含むテキスト ファイルが作成されます。このスクリプトを実行するには、SharePoint Online Management Shell をインストールして使用する必要があります (前のトピックの手順 1 を参照)。その後、手順 1 で作成する CSV ファイルでこれらの URL を使うことができます。

  • このトピックで作成するすべてのファイルは必ず同じフォルダーに保存してください。そうすれば、スクリプトをより簡単に実行できます。

  • スクリプトには最低限のエラー処理が含まれています。その主な目的は、複数のコンテンツ検索をすばやく作成、レポート、および削除することです。

  • このトピックに記載されているサンプル スクリプトは、Microsoft の標準的なサポート プログラムやサービスではサポートされていません。サンプル スクリプトはいかなる保障もない現状有姿のままで提供されます。さらに、Microsoft は、商品性、特定目的への適合性を含む一切の黙示の保証をいたしかねます。本サンプル スクリプトおよびドキュメントの使用または性能に起因するすべてのリスクは、お客様が負うものとします。Microsoft、本サンプル スクリプトの作成者、および本スクリプトの作成、製造、配布に関与する者は、いかなる場合においても、本サンプル スクリプトおよびドキュメントの使用または使用不能から生じる損害 (逸失利益、事業の中断、事業情報の喪失またはその他の金銭的損失を含みますがこれらに限定されません) に関して一切責任を負いません。たとえ、Microsoft がこのような損害の可能性について知らされていた場合でも同様です。

手順 1:実行する検索に関する情報を含む CSV ファイルを作成する

この手順で作成するカンマ区切り値 (CSV) ファイルには、検索するユーザーごとの行が含まれます。ユーザーの Exchange Online メールボックス (有効な場合はアーカイブ メールボックスを含む) と OneDrive for Business サイトを検索できます。メールボックスまたは OneDrive for Business サイトのみを検索することもできます。SharePoint Online 組織で任意のサイトを検索することもできます。手順 3 で実行するスクリプトでは、CSV ファイルの行ごとに別の検索が作成されます。

  1. メモ帳を使って、以下のテキストを .txt ファイルにコピーして貼り付けます。ローカル コンピューターのフォルダーにこのファイルを保存します。他のスクリプトもこのフォルダーに保存します。

    ExchangeLocation,SharePointLocation,ContentMatchQuery,StartDate,EndDate
    sarad@contoso.onmicrosoft.com,https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com,(lawsuit OR legal),1/1/2000,12/31/2005
    sarad@contoso.onmicrosoft.com,https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com,(lawsuit OR legal),1/1/2006,12/31/2010
    sarad@contoso.onmicrosoft.com,https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com,(lawsuit OR legal),1/1/2011,3/21/2016
    ,https://contoso.sharepoint.com/sites/contoso,,,3/21/2016
    ,https://contoso-my.sharepoint.com/personal/davidl_contoso_onmicrosoft_com,,1/1/2015,
    ,https://contoso-my.sharepoint.com/personal/janets_contoso_onmicrosoft_com,,1/1/2015,

    ファイルの最初の行 (つまり、ヘッダー行) には、新しいコンテンツ検索を作成するために (手順 3 のスクリプトの) New-ComplianceSearch コマンドレットで使用されるパラメーターがリストされます。各パラメーターの名前はコンマで区切られます。見出し行にスペースがないことを確認してください。見出し行の下の各行は、各検索のパラメーター値を表します。CSV ファイル内のプレースホルダー データは、必ず実際のデータと置き換えてください。

  2. Microsoft Excel で .txt ファイルを開いてから、次の表の情報を使って各検索の情報でファイルを編集します。

    パラメーター

    説明

    ExchangeLocation

    ユーザーのメールボックスの SMTP アドレス。

    SharePointLocation

    ユーザーの OneDrive for Business サイトの URL または組織内の任意のサイトの URL。OneDrive for Business サイトの URL の場合は、 https://<your organization>-my.sharepoint.com/personal/<user alias>_<your organization>_onmicrosoft_com という形式を使います。たとえば、https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com となります。

    ContentMatchQuery

    検索に対する検索クエリ。検索クエリの作成の詳細については、「コンテンツ検索のキーワード クエリと検索条件」を参照してください。

    StartDate

    メールの場合は、メッセージが受信者によって受信されたか送信者によって送信された日以降の日付。SharePoint または OneDrive for Business サイトのドキュメントの場合は、ドキュメントが最後に変更された日以降の日付。

    EndDate

    メールの場合は、メッセージがユーザーによって送信された日以前の日付。SharePoint または OneDrive for Business サイトのドキュメントの場合は、ドキュメントが最後に変更された日以前の日付。

  3. ローカル コンピューター上のフォルダーに CSV ファイルとして Excel ファイルを保存します。手順 3 で作成するスクリプトでは、この CSV ファイルの情報を使って検索を作成します。

先頭に戻る

手順 2:リモート PowerShell を使ってセキュリティ/コンプライアンス センターに接続する

次の手順は、組織の セキュリティ/コンプライアンス センター に Windows PowerShell を接続することです。

  1. ファイル名のサフィックスに .ps1 を使って (例: ConnectSCC.ps1)、次のテキストを Windows PowerShell スクリプト ファイルに保存します。このファイルを手順 1 で CSV ファイルを保存したのと同じフォルダーに保存します。

    # Get login credentials 
    $UserCredential = Get-Credential 
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid -Credential $UserCredential -Authentication Basic -AllowRedirection 
    Import-PSSession $Session -AllowClobber -DisableNameChecking 
    $Host.UI.RawUI.WindowTitle = $UserCredential.UserName + " (Office 365 Security & Compliance Center)" 
    
  2. ローカル コンピューターで、Windows PowerShell を開き、前の手順で作成したスクリプトがあるフォルダーに移動し、次のようにスクリプトを実行します。

    .\ConnectSCC.ps1

先頭に戻る

手順 3:スクリプトを実行し、検索を作成して開始する

この手順のスクリプトでは、手順 1 で作成した CSV ファイルに行ごとに別のコンテンツ検索が作成されます。このスクリプトを実行すると、次の 2 つの値の入力を求められます。

  • 検索グループ ID    この名前で、CSV ファイルから作成された検索を簡単に整理できます。作成された検索にはそれぞれ検索グループ ID で名前が付けられてから、検索名に番号が付加されます。たとえば、検索グループ ID として「ContosoCase」と入力した場合、検索名は ContosoCase_1ContosoCase_2ContosoCase_3 などとなります。入力した名前は大文字と小文字が区別されることに注意してください。手順 4 と手順 5 で検索グループ ID を使う場合は、作成時と同じ大文字と小文字を使う必要があります。

  • CSV ファイル   手順 1 で作成した CSV ファイルの名前。必ず、.csv ファイル拡張子を含む、完全なファイル名を使ってください (例: ContosoCase.csv)。

  1. ファイル名のサフィックスに .ps1 を使って (例: CreateSearches.ps1)、次のテキストを Windows PowerShell スクリプト ファイルに保存します。このファイルを、他のファイルを保存したのと同じフォルダーに保存します。

    # Get the Search Group ID and the location of the CSV input file
    $searchGroup = Read-Host 'Search Group ID'
    $csvFile = Read-Host 'Source CSV file'
    	
    # Do a quick check to make sure our group name will not collide with other searches
    $searchCounter = 1
    import-csv $csvFile |
    	ForEach-Object{
    	
    	$searchName = $searchGroup +'_' + $searchCounter
    	$search = Get-ComplianceSearch $searchName -EA SilentlyContinue
    	if ($search)
    	{
    	    Write-Error "The Search Group ID conflicts with existing searches.  Please choose a search group name and restart the script."
    	    return
    	}
    	$searchCounter++
    }
    	
    $searchCounter = 1
    import-csv $csvFile |
    	ForEach-Object{
    	
    	# Create the query
    	$query = $_.ContentMatchQuery
    	if(($_.StartDate -or $_.EndDate))
    	{
            # Add the appropriate date restrictions.  NOTE: Using the Date condition property here because it works across Exchange, SharePoint, and OneDrive for Business.
            # For Exchange, the Date condition property maps to the Sent and Received dates; for SharePoint and OneDrive for Business, it maps to Created and Modified dates.
    
            if($query)
            {
                $query += " AND"
            }
    
            $query += " ("
    
            if($_.StartDate)
            {
                $query += "Date >= " + $_.StartDate
            }
    
            if($_.EndDate)
            {
                if($_.StartDate)
                {
                    $query += " AND "
                }
                $query += "Date <= " + $_.EndDate
            }
    
            $query += ")"
    	}
        
        # -ExchangeLocation can't be set to an empty string, set to null if there's no location.
        $exchangeLocation = $null
        if ( $_.ExchangeLocation)
        {
             $exchangeLocation = $_.ExchangeLocation
        }
    	
    	# Create and run the search        
    	$searchName = $searchGroup +'_' + $searchCounter
    	Write-Host "Creating and running search: " $searchName -NoNewline
    	$search = New-ComplianceSearch -Name $searchName -ExchangeLocation $exchangeLocation -SharePointLocation $_.SharePointLocation -ContentMatchQuery $query
    	
    	# Start and wait for each search to complete
    	Start-ComplianceSearch $search.Name
    	while ((Get-ComplianceSearch $search.Name).Status -ne "Completed")
    	{
    	    Write-Host " ." -NoNewline
    	    Start-Sleep -s 3
    	}
    	Write-Host ""
    	
    	$searchCounter++
    }
  2. Windows PowerShell で、前の手順でスクリプトを保存したフォルダーに移動してから、次のようにスクリプトを実行します。

    .\CreateSearches.ps1
  3. 検索グループ ID プロンプトで、検索グループ名 (例: ContosoCase) を入力してから Enter キーを押します。この名前は大文字と小文字が区別されるため、この後の手順でも同じように入力する必要があることに注意してください。

  4. ソース CSV ファイル プロンプトで、.csv ファイル拡張子を含む、CSV ファイルの名前 (例: ContosoCase.csv) を入力します。

  5. Enter キーを押してスクリプトの実行を続けます。

    スクリプトには、検索の作成と実行の進捗状況が表示されます。スクリプトが完了すると、プロンプトに戻ります。

    複数のコンプライアンス検索を作成するスクリプトの実行からの出力例

先頭に戻る

手順 4:スクリプトを実行して、検索見積もりをレポートする

検索を作成したら、次は、手順 3 で作成された検索ごとの検索ヒット数の単純なレポートを表示するスクリプトを実行します。このレポートには、検索ごとの結果のサイズと、すべての検索のヒットの合計数および合計サイズも含まれます。レポート スクリプトを実行すると、検索グループ ID と、CSV ファイル名 (CSV ファイルにレポートを保存する場合) の入力を求められます。

  1. ファイル名のサフィックスに .ps1 を使って (例: SearchReport.ps1)、次のテキストを Windows PowerShell スクリプト ファイルに保存します。このファイルを、他のファイルを保存したのと同じフォルダーに保存します。

    $searchGroup = Read-Host 'Search Group ID'
    $outputFile = Read-Host 'Enter a file name or file path to save the report to a .csv file. Leave blank to only display the report'
    
    $searches = Get-ComplianceSearch | ?{$_.Name -clike $searchGroup + "_*"}
    
    $allSearchStats = @()
    foreach ($partialObj in $searches)
    {
        $search = Get-ComplianceSearch $partialObj.Name
    
        $sizeMB = [System.Math]::Round($search.Size / 1MB, 2)
    
        $searchStatus = $search.Status
        if($search.Errors)
        {
            $searchStatus = "Failed"
        }elseif($search.NumFailedSources -gt 0)
        {
            $searchStatus = "Failed Sources"
        }
    
        $searchStats = New-Object PSObject
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name Name -Value $search.Name
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name ContentMatchQuery -Value $search.ContentMatchQuery
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name Status -Value $searchStatus
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name Items -Value $search.Items
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name "Size" -Value $search.Size
        Add-Member -InputObject $searchStats -MemberType NoteProperty -Name "Size(MB)" -Value $sizeMB
    
        $allSearchStats += $searchStats
    }
    
    # Calculate the totals
    $allItems = ($allSearchStats | Measure-Object Items -Sum).Sum
    
    # Convert the total size to MB and round to the nearst 100th
    $allSize = ($allSearchStats | Measure-Object 'Size' -Sum).Sum
    $allSizeMB = [System.Math]::Round($allSize  / 1MB, 2)
    
    # Get the total successful searches and total of all searches
    $allSuccessCount = ($allSearchStats |?{$_.Status -eq "Completed"}).Count
    $allCount = $allSearchStats.Count
    $allStatus = [string]$allSuccessCount + " of " + [string]$allCount
    
    # Totals Row
    $totalSearchStats = New-Object PSObject
    Add-Member -InputObject $totalSearchStats -MemberType NoteProperty -Name Name -Value "Total"
    Add-Member -InputObject $totalSearchStats -MemberType NoteProperty -Name Status -Value $allStatus
    Add-Member -InputObject $totalSearchStats -MemberType NoteProperty -Name Items -Value $allItems
    Add-Member -InputObject $totalSearchStats -MemberType NoteProperty -Name "Size(MB)" -Value $allSizeMB
    $allSearchStats += $totalSearchStats
    
    # Just get the columns we're interested in showing
    $allSearchStatsPrime = $allSearchStats | Select-Object Name, Status, Items, "Size(MB)", ContentMatchQuery
    
    # Print the results to the screen
    $allSearchStatsPrime |ft -AutoSize -Wrap
    
    # Save the results to a CSV file
    if ($outputFile)
    {
        $allSearchStatsPrime | Export-Csv -Path $outputFile -NoTypeInformation
    }
  2. Windows PowerShell で、前の手順でスクリプトを保存したフォルダーに移動してから、次のようにスクリプトを実行します。

    .\SearchReport.ps1
  3. 検索グループ ID プロンプトで、検索グループ名 (例: ContosoCase) を入力してから Enter キーを押します。この名前は大文字と小文字が区別されるため、手順 3 でスクリプトを実行したときと同じように入力する必要があることに注意してください。

  4. CSV ファイルにレポートを保存するためのファイル パス (レポートを表示するだけの場合は空のままにします) のプロンプトで、CSV ファイルにレポートを保存する場合は、完全なファイル名パスのファイル名 (.csv ファイル拡張子を含む) を入力します。たとえば、現在のディレクトリに保存する場合は「ContosoCaseReport.csv」と入力し、別のフォルダーに保存する場合は「C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv」と入力します。レポートを表示するだけでファイルには保存しない場合、プロンプトは空のままでかまいません。

  5. Enter キーを押します。

    スクリプトには、検索の作成と実行の進捗状況が表示されます。スクリプトが完了すると、レポートが表示されます。

    検索レポートを実行して検索グループの推定値を表示する

先頭に戻る

注: 同じメールボックスやサイトを検索グループ内の 1 つ以上の検索でコンテンツの場所として指定すると、(項目数と合計サイズの両方の) レポート内の結果の見積合計に同じ項目の結果が含まれる場合があります。これは、同じメール メッセージまたはドキュメントが、検索グループ内の異なる検索に対するクエリに一致する場合に複数回カウントされるためです。

手順 5:スクリプトを実行して、検索を削除する

多くの検索を作成する可能性があるため、手順 3 で作成した検索を簡単にすばやく削除できるようにこの最後のスクリプトを使います。他のスクリプトと同じように、このスクリプトでも検索グループ ID の入力を求められます。このスクリプトを実行すると、検索名に検索グループ ID を含むすべての検索が削除されます。

  1. ファイル名のサフィックスに .ps1 を使って (例: DeleteSearches.ps1)、次のテキストを Windows PowerShell スクリプト ファイルに保存します。このファイルを、他のファイルを保存したのと同じフォルダーに保存します。

    # Delete all searches in a search group
    $searchGroup = Read-Host 'Search Group ID'
    Get-ComplianceSearch |
        ForEach-Object{
    
        # If the name matches the search group name pattern (case sensitive), delete the search
        if ($_.Name -cmatch $searchGroup + "_\d+")
        {
            Write-Host "Deleting search: " $_.Name
            Remove-ComplianceSearch $_.Name -Confirm:$false
        }
    }
  2. Windows PowerShell で、前の手順でスクリプトを保存したフォルダーに移動してから、次のようにスクリプトを実行します。

    .\DeleteSearches.ps1
  3. 検索グループ ID プロンプトで、削除する検索の検索グループ名 (例: ContosoCase) を入力してから Enter キーを押します。この名前は大文字と小文字が区別されるため、手順 3 でスクリプトを実行したときと同じように入力する必要があることに注意してください。

    スクリプトには削除される各検索の名前が表示されます。

    スクリプトを実行して検索グループの検索を削除する

先頭に戻る

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×