使用 Office 365 中的目标集的内容搜索

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

内容搜索功能Office 365 安全与合规中心中的不能直接在用户界面Exchange邮箱或SharePoint和OneDrive for Business网站中搜索特定的文件夹。但是,就可以通过在实际的搜索查询语法中指定的文件夹 ID 或路径中搜索特定文件夹 (称为面向集)。自信响应事例的项目或特权的项目位于特定邮箱或网站文件夹中时,使用内容搜索执行目标的集合很有用。您可以使用本文中的脚本来获取邮箱文件夹的文件夹 ID 或SharePoint和OneDrive for Business网站上的文件夹的路径。然后您可以使用文件夹 ID 或路径中搜索查询返回位于文件夹中的项目。

下面是做到这一点步骤︰

步骤 1︰ 运行脚本来获取邮箱或网站的文件夹列表

步骤 2︰ 使用文件夹 ID 或路径执行目标的集合

详细信息

开始之前

  • 您必须是电子数据展示管理器中角色组安全与合规中心步骤 1 中运行脚本的成员。有关详细信息,请参阅在 Office 365 安全和合规性中心中的电子数据展示权限分配

    此外,您必须Exchange Online组织中的邮件收件人角色分配。需要运行Get-MailboxFolderStatistics cmdlet,包含在步骤 1 中的脚本。默认情况下,邮件收件人角色分配给Exchange Online组织管理和收件人管理角色组。有关在Exchange Online中分配权限的详细信息,请参阅管理角色组成员。无法创建自定义角色组、 邮件收件人角色为其分配,然后添加成员需要在步骤 1 中运行脚本。有关详细信息,请参阅管理角色组

  • 您在步骤 1,运行该脚本每次创建新的远程 PowerShell 会话。因此,您可以使用所有远程 PowerShell 会话可供您设置。若要防止发生此,您可以运行以下命令以断开您活动的远程 PowerShell 会话。

    Get-PSSession | Remove-PSSession

    有关详细信息,请参阅连接到 Exchange Online PowerShell

  • 该脚本包括最小的错误处理。脚本的主要用途是迅速显示邮箱文件夹 Id 的列表或网站可用于在内容搜索的搜索查询语法中执行目标的集的路径。

  • 本主题中提供的示例脚本不支持在任何 Microsoft 标准支持计划或服务。示例脚本按原样提供没有任何形式的保证。Microsoft 进一步不承担全部默示的担保,包括但不限于任何默示或适用于特殊用途的适销提供任何担保。与您保持整个风险因使用或示例脚本和文档的性能。在任何情况下 Microsoft,其作者,或其他任何人参与创建、 生产,或者传递的脚本不承担任何责任 (包括没有限制、 损失业务利润、 业务中断、 业务信息丢失或其他 pecuniary 丢失) 因使用或不能使用示例脚本或文档,即使 Microsoft 已被告知此类损害的可能性。

返回页首

步骤 1︰ 运行脚本来获取邮箱或网站的文件夹列表

您在本步骤中运行脚本将返回邮箱文件夹或SharePoint或OneDrive for Business文件夹的相应文件夹 ID 或每个文件夹的路径的列表。当您运行此脚本时,它将提示您输入以下信息。

  • 通过电子邮件地址或网站 URL   键入电子邮件地址的管理员,以返回Exchange的列表的邮箱文件夹和折叠 Id。或键入SharePoint网站或OneDrive for Business网站的 URL,以返回指定网站的路径的列表。下面是一些示例︰

    • Exchange   stacig@contoso.onmicrosoft.com

    • SharePoint   https://contoso.sharepoint.com/sites/marketing

    • OneDrive for Business   https://contoso-my.sharepoint.com/personal/stacig_contoso_onmicrosoft_com

  • 您的用户凭据   脚本将使用您的凭据连接到Exchange Online和使用远程 PowerShell 安全与合规中心 。作为前面所述,您可以分配适当的权限,才能成功运行此脚本。

若要显示的邮箱文件夹列表或网站路径名︰

  1. 使用文件名后缀.ps1; 将以下文本保存到Windows PowerShell脚本文件例如,GetFolderSearchParameters.ps1。

    #########################################################################################################
    # This PowerShell script will prompt you for:								#
    #    * Admin credentials for a user who can run the Get-MailboxFolderStatistics cmdlet in Exchange	#
    #      Online and who is an eDiscovery Manager in the Security & Compliance Center.			#
    # The script will then:											#
    #    * If an email address is supplied: list the folders for the target mailbox.			#
    #    * If a SharePoint or OneDrive for Business site is supplied: list the folder paths for the site.	#
    #    * In both cases, the script supplies the correct search properties (folderid: or path:)		#
    #      appeneded to the folder ID or path ID to use in a Content Search.				#
    # Notes:												#
    #    * For SharePoint and OneDrive for Business, the paths are searched recursively; this means the 	#
    #      the current folder and all sub-folders are searched.						#
    #    * For Exchange, only the specified folder will be searched; this means sub-folders in the folder	#
    #      will not be searched.  To search sub-folders, you need to use the specify the folder ID for	#
    #      each sub-folder that you want to search.								#
    #    * For Exchange, only folders in the user's primary mailbox will be returned by the script.		#
    #########################################################################################################
    
    # Collect the target email address or SharePoint Url
    $addressOrSite = Read-Host "Enter an email address or a URL for a SharePoint or OneDrive for Business site"
    
    # Authenticate with Exchange Online and the Security & Complaince Center (Exchange Online Protection - EOP)
    if (!$credentials)
    {
        $credentials = Get-Credential
    }
    
    if ($addressOrSite.IndexOf("@") -ige 0)
    {
        # List the folder Ids for the target mailbox
        $emailAddress = $addressOrSite
    
        # Authenticate with Exchange Online
        if (!$ExoSession)
        {
            $ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell-liveid/ -Credential $credentials -Authentication Basic -AllowRedirection
            Import-PSSession $ExoSession -AllowClobber -DisableNameChecking
        }
    
        $folderQueries = @()
        $folderStatistics = Get-MailboxFolderStatistics $emailAddress
        foreach ($folderStatistic in $folderStatistics)
        {
            $folderId = $folderStatistic.FolderId;
            $folderPath = $folderStatistic.FolderPath;
    
            $encoding= [System.Text.Encoding]::GetEncoding("us-ascii")
            $nibbler= $encoding.GetBytes("0123456789ABCDEF");
            $folderIdBytes = [Convert]::FromBase64String($folderId);
            $indexIdBytes = New-Object byte[] 48;
            $indexIdIdx=0;
            $folderIdBytes | select -skip 23 -First 24 | %{$indexIdBytes[$indexIdIdx++]=$nibbler[$_ -shr 4];$indexIdBytes[$indexIdIdx++]=$nibbler[$_ -band 0xF]}
            $folderQuery = "folderid:$($encoding.GetString($indexIdBytes))";
    
            $folderStat = New-Object PSObject
            Add-Member -InputObject $folderStat -MemberType NoteProperty -Name FolderPath -Value $folderPath
            Add-Member -InputObject $folderStat -MemberType NoteProperty -Name FolderQuery -Value $folderQuery
    
            $folderQueries += $folderStat
        }
        Write-Host "-----Exchange Folders-----"
        $folderQueries |ft
    }
    elseif ($addressOrSite.IndexOf("http") -ige 0)
    {
        $searchName = "SPFoldersSearch"
        $searchActionName = "SPFoldersSearch_Preview"
    
        # List the folders for the SharePoint or OneDrive for Business Site
        $siteUrl = $addressOrSite
    
        # Authenticate with the Security & Complaince Center
        if (!$SccSession)
        {
            $SccSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid -Credential $credentials -Authentication Basic -AllowRedirection
            Import-PSSession $SccSession -AllowClobber -DisableNameChecking
        }
    
        # Clean-up, if the the script was aborted, the search we created might not have been deleted.  Try to do so now.
        Remove-ComplianceSearch $searchName -Confirm:$false -ErrorAction 'SilentlyContinue'
    
        # Create a Content Search against the SharePoint Site or OneDrive for Business site and only search for folders; wait for the search to complete
        $complianceSearch = New-ComplianceSearch -Name $searchName -ContentMatchQuery "contenttype:folder" -SharePointLocation $siteUrl
        Start-ComplianceSearch $searchName
        do{
            Write-host "Waiting for search to complete..."
            Start-Sleep -s 5
            $complianceSearch = Get-ComplianceSearch $searchName
        }while ($complianceSearch.Status -ne 'Completed')
    
    
        if ($complianceSearch.Items -gt 0)
        {
            # Create a Complinace Search Action and wait for it to complete. The folders will be listed in the .Results parameter
            $complianceSearchAction = New-ComplianceSearchAction -SearchName $searchName -Preview
            do
            {
                Write-host "Waiting for search action to complete..."
                Start-Sleep -s 5
                $complianceSearchAction = Get-ComplianceSearchAction $searchActionName
            }while ($complianceSearchAction.Status -ne 'Completed')
    
            # Get the results and print out the folders
            $results = $complianceSearchAction.Results
            $matches = Select-String "Data Link:.+[,}]" -Input $results -AllMatches
            foreach ($match in $matches.Matches)
            {
                $rawUrl = $match.Value
                $rawUrl = $rawUrl -replace "Data Link: " -replace "," -replace "}"
                Write-Host "path:""$rawUrl"""
            }
        }
        else
        {
            Write-Host "No folders were found for $siteUrl"
        }
    
        Remove-ComplianceSearch $searchName -Confirm:$false -ErrorAction 'SilentlyContinue'
    }
    else
    {
        Write-Error "Couldn't recognize $addressOrSite as an email address or a site URL"
    }
  2. 本地计算机上打开Windows PowerShell ,然后转到脚本的保存位置文件夹。

  3. 运行脚本。例如︰

    .\GetFolderSearchParameters.ps1
  4. 输入该脚本将提示您输入的信息。

    脚本显示邮箱文件夹或指定用户的网站文件夹的列表。让此窗口打开,以便您可以复制文件夹 ID 或路径名称,并将其粘贴到步骤 2 中搜索查询。

    提示: 而不是计算机屏幕上显示的文件夹列表,您可以重定向到文本文件脚本的输出。此文件将保存到该脚本所在的文件夹。例如,要重定向到文本文件输出的脚本,运行以下命令在步骤 3: .\GetFolderSearchParameters.ps1 > StacigFolderIds.txt然后您可以从要在搜索查询中使用的文件复制文件夹 ID 或路径。

返回页首

脚本输出邮箱文件夹

如果你遇到邮箱文件夹 Id,则脚本通过使用远程 PowerShell 连接到Exchange Online 、 运行Get-MailboxFolderStatisics cmdlet,,然后显示从指定的邮箱的文件夹列表。对每个文件夹的邮箱中,脚本显示采用文件夹路径列和FolderQuery列中的文件夹 ID 中文件夹的名称。此外,该脚本将文件夹 Id (这是邮箱属性的名称) 的前缀添加到文件夹 id。因为文件夹 id属性是可搜索的属性,将在步骤 2 中搜索查询中使用folderid:<folderid>来搜索该文件夹。

下面是输出的邮箱文件夹脚本返回的示例。

邮箱文件夹和文件夹脚本返回的 Id 的列表的示例

步骤 2 中的示例显示用于在用户的可恢复的项目文件夹中搜索清除子查询。

网站文件夹的脚本输出

如果你遇到路径SharePoint或OneDrive for Business网站,该脚本连接到使用远程 PowerShell 安全与合规中心 ,创建新的内容搜索的搜索文件夹的网站,然后显示位于在网站中指定的文件夹列表。脚本显示每个文件夹的名称,并添加文件夹 URL路径(这是网站属性的名称) 的前缀。因为路径属性是可搜索的属性,将在步骤 2 中搜索查询中使用path:<path>要搜索的文件夹。

下面是输出的网站文件夹的脚本返回的示例。

返回由脚本的网站文件夹的路径名称列表的示例

返回页首

步骤 2︰ 使用文件夹 ID 或路径执行目标的集合

之后您已运行脚本来收集文件夹 Id 或特定用户下, 一步,转到安全与合规中心并创建新的内容搜索要搜索的特定文件夹的路径的列表。您将在内容搜索关键字框中 (或如果您使用New-ComplianceSearch cmdlet ContentMatchQuery参数的值作为) 您配置搜索查询中使用folderid:<folderid>path:<path>属性。您可以将folderidpath属性结合使用其他搜索参数,或搜索条件。如果您仅在查询中包括的folderidpath属性,搜索将返回指定的文件夹中的所有项目。

  1. 转到 https://protection.office.com

  2. 登录到Office 365使用的帐户和用于在步骤 1 中运行脚本的凭据。

  3. 在安全与合规中心左窗格中,单击搜索和调查>内容搜索,然后单击新建 添加图标

  4. 在“新搜索”页上,为内容搜索键入一个名称。此名称在组织中必须是唯一的。

  5. 希望在何处我们来看,请执行下列操作之一根据您搜索邮箱文件夹或网站文件夹︰

    • 单击选择要搜索的特定邮箱,然后再添加您在步骤 1 中运行脚本时指定的相同邮箱。

    • 单击选择要搜索的特定网站搜索,然后添加您在步骤 1 中运行脚本时指定的相同网站 URL。

  6. 单击“下一步”。

  7. 要我们要查找的页面中,粘贴folderid:<folderid>path:<path>值返回的步骤 1 中的脚本的关键字框中。

    例如,下面的屏幕截图中的查询将从邮箱文件夹屏幕截图显示步骤 1 中的用户的可恢复的项目文件夹中的清除子文件夹中的任何项目搜索。

    粘贴文件夹 id 或搜索查询的关键字框中的路径
  8. 单击搜索以启动搜索目标的集合。

返回页首

为目标集的搜索查询的示例

下面是在查询中使用folderidpath属性执行目标的集合的一些示例。请注意,占位符用于folderid:<folderid>path:<path>可节省空间。

  • 本示例搜索三个不同的邮箱文件夹。您可以使用类似的查询语法在用户的可恢复的项目文件夹中搜索隐藏的文件夹。

    folderid:<folderid> OR folderid:<folderid> OR folderid:<folderid>
  • 本示例搜索邮箱文件夹包含精确匹配的短语的项目。

    folderid:<folderid> AND "Contoso financial results"
  • 本示例搜索包含字母"NDA"标题中的文档的网站文件夹 (和任何子文件夹)。

    path:<path> AND filename:nda
  • 本示例搜索网站文件夹 (和任何子文件夹),文档已更改的日期范围内。

    path:<path> AND (lastmodifiedtime>=01/01/2017 AND lastmodifiedtime<=01/21/2017)

返回页首

更多信息

使用本文中的脚本和执行面向集时,请注意下列事项。

  • 脚本不会删除结果中的任何文件夹。中列出的某些文件夹,因此结果可能搜索不到 (或返回零项目) 因为它们包含系统生成的内容。

  • 此脚本只返回文件夹的用户的主邮箱的信息。在用户的存档邮箱,它不会返回有关文件夹的信息。

  • 在搜索邮箱文件夹时,将搜索仅指定的文件夹 (由其folderid属性标识)。不会搜索子文件夹。若要搜索的子文件夹,您需要folderid用于您想要搜索的子文件夹。

  • 在搜索网站文件夹时,将搜索 (由其path属性标识) 文件夹及其所有子文件夹。

返回页首

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

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

此信息是否有帮助?

谢谢您的反馈!

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

×