建立、 報告,並刪除多個內容搜尋

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

快速建立與報告探索搜尋,通常會 eDiscovery 和調查的重要步驟時您想要深入瞭解基礎資料,以及豐富和搜尋的品質。 若要協助您執行此動作, 安全性與合規性中心會提供一組的Windows PowerShell cmdlet 來自動化耗時的內容搜尋。這些指令碼提供快速又簡單的方式來建立的搜尋,數字,然後再執行報表的估計的搜尋結果,可協助您決定問題的資料量。 您也可以使用指令碼來建立不同版本的搜尋比較每個所產生的結果。這些指令碼可以協助您快速並有效率地找出並 cull 資料。

本主題包含可以建立、 啟動、 報告,並刪除多個搜尋執行的指令碼。以下是概略瞭解程序︰

步驟 1︰ 建立一個 CSV 檔案,包含您想要執行搜尋的相關資訊

步驟 2︰ 連線至 [安全性與規範中心使用遠端 PowerShell

步驟 3︰ 執行指令碼來建立並開始搜尋

步驟 4︰ 執行報告搜尋的指令碼來估計

步驟 5︰ 執行刪除搜尋指令碼

開始之前

  • 您必須是群組的成員 eDiscovery 管理員角色中安全性與合規性中心執行本主題中的指令碼所述。

  • 若要收集 CSV 檔案,在 [步驟 1 中,您可以新增您組織中商務用 OneDrive網站的 Url 清單,請在 [步驟 2 中指派至 OneDrive for Business 網站的 eDiscovery 權限使用指令碼。這個指令碼會建立包含的所有商務用 OneDrive網站清單的文字檔案。若要執行這個指令碼,您必須安裝並使用SharePoint Online管理命令介面 (請參閱前一主題中的步驟 1)。然後您可以使用這些 Url 您在步驟 1 建立的 CSV 檔案中。

  • 請務必儲存您在本主題的相同資料夾中建立的所有檔案。會使執行指令碼更加容易。

  • 指令碼包含最小的錯誤處理。其主要目的是快速建立、 報告,並刪除多個內容搜尋。

  • 在任何 Microsoft 標準支援程式或服務下,不支援本主題提供的指令碼。範例指令碼係依「現狀」提供,不附帶任何明示或默示的擔保。Microsoft 另外不承擔任何明示或默示的擔保,包括但不限於適售性或適合某特定用途的默示擔保。使用或操作範例指令碼和文件發生的所有風險皆屬於您的責任。Microsoft、其作者以及其他與建置、生產或交付程式碼相關的任何人在任何情況下皆完全不需對任何損失負責任,包括但不限於商業利潤損失、業務中斷、業務資訊損失、或其他錢財損失等因使用或無法使用範例指令碼所發生的損失,即使 Microsoft 曾建議這些損失發生的可能性。

步驟 1︰ 建立一個 CSV 檔案,包含您想要執行搜尋的相關資訊

您在此步驟中建立逗點分隔的值 (CSV) 檔案包含要搜尋的每位使用者的列。 您可以搜尋使用者Exchange Online信箱 (包括封存的信箱,如果已啟用) 和其商務用 OneDrive網站。 或者,您可以搜尋只信箱或商務用 OneDrive網站。您也可以搜尋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,

    第一列或檔案的標題列,列出的參數會New-ComplianceSearch cmdlet (在步驟 3 中的指令碼),用來建立新的內容搜尋。以逗號分隔每個參數名稱。請確定在 [標題列中沒有任何空格。在 [標題列的每個資料列代表每個搜尋的參數值。請確定 CSV 檔案中的預留位置資料換成實際資料。

  2. 在 Excel 中,開啟.txt 檔案,然後使用下表中的資訊編輯每個搜尋的資訊檔案。

    參數

    描述

    ExchangeLocation

    使用者的信箱的 SMTP 位址。

    SharePointLocation

    使用者的商務用 OneDrive網站的 URL 或您組織中的任何網站的 URL。 商務用 OneDrive網站的 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網站上的 [文件上次修改日期當天或之後的文件。

    EndDate

    電子郵件,傳送的日期當天或之前郵件已傳送的使用者。SharePoint或商務用 OneDrive網站上的 [文件上次修改日期當天或之前文件。

  3. 儲存為 CSV 檔案的資料夾的 Excel 檔案,在您的本機電腦上。您在步驟 3 中所建立的指令碼會使用此 CSV 檔案中的資訊,來建立搜尋。

回到頂端

步驟 2︰ 連線至安全性與合規性中心使用遠端 PowerShell

下一個步驟是將Windows PowerShell連線到安全性與合規性中心為您的組織。

  1. 使用檔案名稱的尾碼.ps1; 將下列文字儲存至Windows PowerShell指令碼檔例如,ConnectSCC.ps1。您在步驟 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 檔案中。當您執行這個指令碼時,會提示您輸入兩個值︰

  • 搜尋群組識別碼  此名稱提供簡單的方法來整理從 CSV 檔案中建立搜尋。建立每一個搜尋為的搜尋群組識別碼,,則將數字附加搜尋名稱]。例如,如果您輸入ContosoCase搜尋群組識別碼,然後搜尋被具名ContosoCase_1ContosoCase_2ContosoCase_3,等等。請注意您輸入的名稱會區分大小寫。當您使用步驟 4 和步驟 5 中搜尋群組識別碼時,您必須使用相同的大小寫,如同您在建立時。

  • CSV 檔案  您在步驟 1 建立的 CSV 檔案的名稱。請務必包含使用完整的檔名,包含.csv 檔案的副檔名。例如, ContosoCase.csv

  1. 使用檔案名稱的尾碼.ps1; 將下列文字儲存至Windows PowerShell指令碼檔例如,CreateSearches.ps1。將檔案儲存到相同的資料夾儲存其他檔案的位置。

    # 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. 搜尋群組識別碼系統提示時,輸入搜尋群組名稱,然後再按enter 鍵。例如, ContosoCase。請記住,此名稱會區分大小寫,讓您將需要後續步驟中輸入相同的方式。

  4. 來源 CSV 檔案的提示時,輸入包含.csv 檔案的副檔名; CSV 檔案的名稱例如, ContosoCase.csv

  5. 若要繼續執行指令碼,按下enter 鍵

    指令碼會顯示進度的建立和執行搜尋。指令碼完成後,會傳回提示。

    執行指令碼以建立多個規範搜尋的範例輸出

回到頂端

步驟 4︰ 執行報告搜尋的指令碼來估計

建立搜尋後下, 一步是執行指令碼會顯示簡易報表的步驟 3 中所建立的每一個搜尋的搜尋結果數目。報表也包含每個搜尋和點擊的總數量與總大小所有的搜尋結果的大小。當您執行的報表的指令碼時,系統會提示您搜尋群組識別碼,及 CSV 檔名如果您想要將報表儲存為 CSV 檔案。

  1. 使用檔案名稱的尾碼.ps1; 將下列文字儲存至Windows PowerShell指令碼檔例如,SearchReport.ps1。將檔案儲存到相同的資料夾儲存其他檔案的位置。

    $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. 搜尋群組識別碼系統提示時,輸入搜尋群組名稱,然後再按enter 鍵。例如ContosoCase。請記住,此名稱會區分大小寫,所以您必須先輸入相同的方式您並未當您在步驟 3 中執行指令碼。

  4. 如果您想要將報表儲存為 CSV 檔案,請在 [檔案儲存為 CSV 檔案 (只顯示報表的保留空白) 報表路徑提示時,輸入完整的檔名路徑 (包括檔案副檔名為.csv) 的檔案名稱。 包含.csv 檔案的副檔名 CSV 檔案的名稱。例如,您可以輸入ContosoCaseReport.csv將其儲存到目前的目錄,或您可以輸入C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv將其儲存到不同的資料夾。您可以也留提示來顯示報表,但不是將其儲存為檔案。

  5. 按下輸入

    指令碼會顯示進度的建立和執行搜尋。指令碼完成後,會顯示報表。

    執行搜尋報告,以顯示搜尋群組的估計

回到頂端

附註: 如果相同的信箱或網站指定為中搜尋群組中的多個搜尋的內容的位置,結果總計估計值 (適用於的項目數和總大小) 報表中可能會包含結果的相同的項目。這是因為相同的電子郵件訊息或文件將會計算多次符合 [搜尋] 群組中的不同搜尋查詢。

步驟 5︰ 執行刪除搜尋指令碼

因為您可能會建立搜尋很多,這個的最後一個指令碼只可輕鬆快速刪除您在步驟 3 中建立搜尋。其他的指令碼,例如此項目也會提示您輸入搜尋群組識別碼。 當您執行這個指令碼時,將會刪除所有的搜尋,搜尋名稱中的搜尋群組識別碼。

  1. 使用檔案名稱的尾碼.ps1; 將下列文字儲存至Windows PowerShell指令碼檔例如,DeleteSearches.ps1。將檔案儲存到相同的資料夾儲存其他檔案的位置。

    # 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. 搜尋群組識別碼提示時,輸入搜尋您想要刪除的搜尋群組名稱,然後按下enter 鍵。例如, ContosoCase。請記住,此名稱會區分大小寫,所以您必須先輸入相同的方式您並未當您在步驟 3 中執行指令碼。

    指令碼會顯示已刪除的每個搜尋的名稱。

    執行指令碼,以刪除搜尋群組中的搜尋

回到頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×