使用 Office 365 中的內容搜尋目標的集合

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

Office 365 安全性與合規性中心的內容搜尋功能不提供直接在 ui 上Exchange信箱或SharePoint和商務用 OneDrive網站中搜尋特定的資料夾。不過,就可以依指定的資料夾 ID 或路徑中實際的搜尋查詢語法搜尋特定的資料夾 (稱為目標集合)。使用內容搜尋執行目標的集合時,您相信回應的大小寫的項目或有權限的項目會位於信箱或網站的特定資料夾。您可以使用本文中的指令碼,以取得信箱資料夾的資料夾 ID 或SharePoint和商務用 OneDrive網站上的資料夾的路徑。然後您可以使用的資料夾 ID 或路徑中搜尋查詢傳回位於資料夾中的項目。

以下是完成這項工作的步驟︰

步驟 1︰ 執行取得信箱或網站文件的資料夾清單的指令碼

步驟 2︰ 使用資料夾 ID 或路徑執行目標的集合

詳細資訊

開始之前

  • 您必須是群組的成員 eDiscovery 管理員角色中安全性與合規性中心執行步驟 1 中的指令碼。如需詳細資訊,請參閱指派的 [Office 365 的安全性與規範中心中的 eDiscovery 權限

    此外,您必須被指派Exchange Online組織中的郵件收件者角色。這樣才能執行Get-MailboxFolderStatistics cmdlet,包含在步驟 1 中的指令碼。根據預設,郵件收件者角色指派給Exchange Online的組織管理和收件者管理角色群組。如需有關如何指派Exchange Online中的權限的詳細資訊,請參閱管理角色群組成員。您可能也建立自訂的角色群組、 郵件收件者角色指派給它,然後再新增 [需要執行步驟 1 中的指令碼的成員。如需詳細資訊,請參閱管理角色群組

  • 您在步驟 1 中,執行指令碼每次建立新的遠端 PowerShell 工作階段。因此,您可以使用所有遠端 PowerShell 工作階段提供給您的設定。若要避免這種情況,您可以執行下列命令以中斷連線使用遠端 PowerShell 工作階段。

    Get-PSSession | Remove-PSSession

    如需詳細資訊,請參閱連線至 Exchange Online PowerShell

  • 指令碼包含最小的錯誤處理。指令碼的主要目的是搜尋的快速顯示信箱資料夾識別碼的清單或網站可用於執行目標的集合的內容,搜尋查詢語法的路徑。

  • 本主題提供的範例指令碼不支援的任何 Microsoft 標準支援程式或服務。範例指令碼現狀提供,而不做任何。Microsoft 不所有暗示的擔保責任包括但不限於,任何暗示或適合特定用途的銷售的擔保責任。使用或範例指令碼及相關文件為承擔風險會留在您。在應該 Microsoft、 其作者或其他人參與建立、 生產,或傳送的指令碼的任何損壞皆不 (包括但不限制、 的影響的商務利潤、 商務中斷的商務資訊遺失損害或其他金錢的影響) 一概使用無法使用的指令碼範例或文件,即使已被告知 Microsoft,例如損害的可能性。

回到頁首

步驟 1︰ 執行取得的信箱或網站的資料夾清單的指令碼

您執行此第一個步驟中的指令碼會傳回信箱資料夾或SharePoint或商務用 OneDrive的資料夾,以及相對應的資料夾 ID 或每個資料夾的路徑的清單。當您執行這個指令碼時,它會提示您輸入下列資訊。

  • 電子郵件地址或網站 URL   輸入要傳回Exchange清單信箱資料夾及摺疊識別碼 okay 電子郵件地址。或輸入SharePoint網站或商務用 OneDrive網站的 URL,以傳回路徑指定網站的清單。以下是一些範例︰

    • Exchange   stacig@contoso.onmicrosoft.com

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

    • 商務用 OneDrive   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 或路徑。

回到頁首

信箱資料夾的指令碼輸出

如果您收到信箱資料夾識別碼,指令碼會使用遠端 PowerShell 連線到Exchange Online 、 執行Get-MailboxFolderStatisics指令程式,然後顯示從指定的信箱資料夾清單。每個資料夾的信箱中,指令碼會顯示在FolderPath欄,在 [ FolderQuery欄中的資料夾識別碼資料夾的名稱。此外,指令碼新增folderId (這是信箱屬性的名稱) 的前置詞資料夾識別碼。因為folderid屬性是可搜尋的屬性,您會在步驟 2 中搜尋查詢中使用folderid:<folderid> ,搜尋該資料夾。

以下是輸出的信箱資料夾的指令碼所傳回的範例。

信箱資料夾及資料夾所傳回的指令碼的識別碼的清單範例

步驟 2 中的範例顯示用來搜尋使用者的 [可復原的郵件] 資料夾中的 [清除子資料夾的查詢。

網站資料夾的指令碼輸出

如果您收到路徑SharePoint或商務用 OneDrive網站,指令碼連線到安全性與合規性中心使用遠端 PowerShell,然後建立新的內容搜尋的搜尋資料夾的網站,並顯示資料夾位於指定網站的清單。指令碼會顯示每個資料夾的名稱,並新增資料夾 URL路徑(這是網站屬性的名稱) 的前置字元。因為路徑屬性是可搜尋的屬性,您會在步驟 2 中搜尋查詢中使用path:<path> ,搜尋該資料夾。

以下是輸出的網站資料夾的指令碼所傳回的範例。

傳回由指令碼的網站資料夾的路徑名稱清單的範例

回到頁首

步驟 2︰ 使用資料夾 ID 或路徑執行目標的集合

之後您已執行指令碼來收集清單資料夾識別碼,或是為特定的使用者下, 一個步驟,移至安全性與合規性中心並建立新的內容搜尋,若要搜尋特定資料夾的路徑。您會在您設定內容搜尋關鍵字方塊中 (或如果您是使用New-ComplianceSearch指令程式ContentMatchQuery參數的值) 的搜尋查詢中使用folderid:<folderid>path:<path>屬性。您可以與其他搜尋參數合併folderidpath屬性,或搜尋條件。如果您只會在查詢中包含folderidpath屬性,搜尋會傳回位於指定的資料夾中的所有項目。

  1. 移至 https://protection.office.com

  2. 登入Office 365使用的帳戶與您用來執行步驟 1 中的指令碼的認證。

  3. 在安全性與合規性中心的左窗格中,按一下 [搜尋和調查>內容搜尋],然後按一下 [新增 [新增] 圖示

  4. 在 [新增搜尋] 頁面上,輸入內容搜尋的名稱。此名稱在您的組織中必須是唯一的。

  5. 在 [您希望在哪裡我們來看起來,請執行下列其中一項根據是否您搜尋的信箱資料夾或網站資料夾︰

    • 按一下 [選擇来搜尋特定的信箱,然後新增您指定您在步驟 1 中執行指令碼時的同一個信箱。

      或者

    • 按一下 [選擇要搜尋特定的網站搜尋,然後將新增相同的網站 URL 所指定當您在步驟 1 中執行指令碼。

  6. 按一下 [下一步]。

  7. 在 [關鍵字] 方塊上什麼執行您希望我們為查詢頁面上,貼上所傳回的步驟 1 中的指令碼的folderid:<folderid>path:<path>值。

    例如,下列的螢幕擷取畫面中的查詢會搜尋信箱資料夾螢幕擷取畫面顯示步驟 1 中從使用者的 [可復原的郵件] 資料夾中的 [清除] 子資料夾中的任何項目。

    貼上 folderid 或搜尋查詢的 [關鍵字] 方塊中的路徑
  8. 按一下 [搜尋] 以開始集合目標的搜尋]。

回到頁首

目標集合的搜尋查詢的範例

以下是一些範例在查詢中使用folderid ] 及 [ path屬性來執行目標的集合。請注意,版面配置區用來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)

回到頁首

其他資訊

使用本文中的指令碼,並執行目標集合時,則請記住下列項目。

  • 指令碼不移除結果的任何資料夾。中列出的部分資料夾,結果可能 unsearchable (或傳回零的項目) 這是因為其包含由系統產生的內容。

  • 這個指令碼只會傳回使用者的主要信箱資料夾資訊。不傳回使用者信箱中的封存資料夾的相關資訊。

  • 當您搜尋的信箱資料夾,便會搜尋只有指定的資料夾 (由其folderid屬性)。不會搜尋子資料夾。若要搜尋的子資料夾,您需要使用folderid您想要搜尋的子資料夾。

  • 當您搜尋網站資料夾,便會搜尋 (由其path屬性) 的資料夾及所有子資料夾。

回到頁首

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

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

這項資訊有幫助嗎?

感謝您的意見反應!

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

×