创建、 报告和删除多个搜索的内容

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

快速创建和报告查询搜索通常是电子数据展示和调查相关的一个重要步骤当您尝试了解基础数据,以及丰富和搜索的质量。 为了帮助您执行此操作, 安全与合规中心提供一组Windows PowerShell cmdlet 来自动执行耗时内容搜索任务。这些脚本提供种快速简便的方式来创建搜索的数字,然后再运行的估计的搜索结果中可帮助您确定问题的数据量的报表。 您可以使用脚本来创建不同版本的比较每个生成的结果的搜索。这些脚本可以帮助您快速高效地识别并挑选数据。

本主题包含可运行用于创建、 开始、 报告,和删除多个搜索的脚本。下面是了解操作过程 ︰

步骤 1 ︰ 创建包含您想要运行的有关搜索的信息的 CSV 文件

步骤 2 ︰ 连接到安全和合规性中心使用远程 PowerShell

步骤 3 ︰ 运行脚本来创建并开始搜索

步骤 4 ︰ 运行报告搜索的脚本估计

步骤 5 ︰ 运行脚本来删除搜索

开始之前

  • 您必须是电子数据展示管理器中角色组安全与合规中心以运行本主题中介绍的脚本的成员。

  • 若要收集您的组织中可以找到在步骤 1 中的 CSV 文件添加OneDrive for Business网站 Url 的列表,请在步骤 2 中分配电子数据展示权限到 OneDrive for Business 网站中使用脚本。该脚本创建一个文本文件,其中包含所有OneDrive for Business网站的列表。若要运行此脚本,您必须安装和使用SharePoint Online命令行管理程序 (请参阅上一主题中的步骤 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 cmdlet 将用于创建新的内容搜索的参数。用逗号分隔每个参数名。请确保没有标题行中的任何空格。在标题行下的每一行表示为每个搜索参数值。请务必将 CSV 文件中的占位符数据替换为实际数据。

  2. 在 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. 在您的本地计算机上,Excel 文件保存为 CSV 文件的文件夹。您在步骤 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 文件中创建的每一行单独的内容搜索。当您运行此脚本时,系统将提示您的两个值 ︰

  • 搜索组 ID  此名称提供了一种简便的方式组织中创建的 CSV 文件的搜索。搜索组 id,名为创建的每个搜索,则将数字追加到搜索名称。例如,如果您输入ContosoCase搜索组 ID,然后搜索命名ContosoCase_1ContosoCase_2ContosoCase_3,等等。请注意,您键入的名称区分大小写。使用在步骤 4 和步骤 5 中搜索组 ID 时,您需要使用相同的大小写,就像您在创建时。

  • 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. 搜索组 ID提示时,键入搜索组名称,然后按Enter。例如, ContosoCase。请记住,此名称区分大小写,因此您将需要键入它的后续步骤中相同的方式。

  4. 源 CSV 文件提示符处,键入包括.csv 文件扩展名; 的 CSV 文件的名称例如, ContosoCase.csv

  5. Enter以继续运行该脚本。

    脚本以创建和运行搜索的进度。脚本完毕后,它将返回的提示。

    运行该脚本以创建多个合规性搜索的示例输出

返回页首

步骤 4 ︰ 运行报告搜索的脚本估计

创建搜索后下, 一步是运行脚本,显示为在步骤 3 中创建的每个搜索的搜索点击次数简单报表。报表还包括的每个搜索和总点击次数和总大小的所有搜索结果的大小。运行报告脚本时,您将会提示输入搜索组 ID 和 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. 搜索组 ID提示时,键入搜索组名称,然后按Enter。例如为ContosoCase。请记住此名称区分大小写,所以您必须重新键入相同的方式时那样在步骤 3 中运行脚本。

  4. 文件路径保存到 CSV 文件 (保留空白只显示报表) 报告提示时,键入文件名的完整文件名路径 (包括.csv 文件扩展名) 如果您想要将报表保存到 CSV 文件。 包括.csv 文件扩展名的 CSV 文件的名称。例如,您可以键入ContosoCaseReport.csv将其保存到当前目录或键入C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv将其保存到另一个文件夹。您也可以将提示保留为空,若要显示的报告,但不是将其保存到文件。

  5. Enter

    脚本以创建和运行搜索的进度。脚本完成后,将显示该报表。

    运行搜索报告以显示对搜索组的估计

返回页首

注意: 如果同一个邮箱或网站被指定为中搜索组中的多个搜索的内容的位置,报表 (供的项目数和总大小) 中的总结果估计值可能包含相同的项的结果。这是因为相同的电子邮件或文档将被计算在内多次如果匹配搜索组中的不同搜索查询。

步骤 5 ︰ 运行脚本来删除搜索

您可能会创建多个搜索,因为此最后一个脚本只是使其容易快速删除在步骤 3 中创建搜索。其他脚本,如此实例也会提示您输入搜索组 id。 当您运行此脚本,将删除所有搜索名称中的搜索组 id 的搜索。

  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. 搜索组 ID提示时,键入您想要删除的搜索的搜索组名称,然后按Enter。例如, ContosoCase。请记住此名称区分大小写,所以您必须重新键入相同的方式时那样在步骤 3 中运行脚本。

    脚本将显示将被删除的每个搜索的名称。

    运行该脚本以删除搜索组中的搜索

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×