Criar, gerar relatórios sobre e excluir várias Pesquisas de Conteúdo

Criar e relatar pesquisas de descoberta rapidamente geralmente é uma etapa importante na descoberta eletrônica e investigações quando você está tentando aprender sobre os dados subjacentes e a riqueza e a qualidade de suas pesquisas. Para ajudá-lo a fazer isso, o Security & Compliance PowerShell oferece um conjunto de cmdlets para automatizar tarefas demoradas da Pesquisa de Conteúdo. Esses scripts fornecem uma maneira rápida e fácil de criar várias pesquisas e, em seguida, executar relatórios dos resultados estimados da pesquisa que podem ajudá-lo a determinar a quantidade de dados em questão. Você também pode usar os scripts para criar diferentes versões de pesquisas para comparar os resultados que cada um produz. Esses scripts podem ajudá-lo a identificar e eliminar seus dados de forma rápida e eficiente.

Dica

Se você não for um cliente E5, use a avaliação de soluções do Microsoft Purview de 90 dias para explorar como recursos adicionais do Purview podem ajudar sua organização a gerenciar as necessidades de segurança e conformidade de dados. Comece agora no hub de avaliações portal de conformidade do Microsoft Purview. Saiba mais sobre os termos de inscrição e avaliação.

  • Você precisa ser membro do grupo de funções do eDiscovery Manager no portal de conformidade do Microsoft Purview para executar os scripts descritos neste tópico.
  • Para coletar uma lista das URLs para os sites de OneDrive for Business em sua organização que você pode adicionar ao arquivo CSV na Etapa 1, consulte Criar uma lista de todos os locais do OneDrive em sua organização.
  • Certifique-se de salvar todos os arquivos que você cria neste tópico para a mesma pasta. Isso facilitará a execução dos scripts.
  • Os scripts incluem o tratamento mínimo de erros. Sua principal finalidade é criar, relatar e excluir rapidamente várias Pesquisas de Conteúdo.
  • Os scripts de exemplo fornecidos neste tópico não têm suporte em nenhum programa ou serviço de suporte padrão da Microsoft. Os scripts de exemplo são fornecidos COMO ESTÃO sem qualquer tipo de garantia. A Microsoft também se isenta de todas as garantias implícitas, incluindo sem limitações quaisquer garantias aplicáveis de padrões de comercialização ou de adequação a uma finalidade específica. Todos os riscos decorrentes do uso ou da execução da documentação ou scripts de exemplo serão de sua responsabilidade. De modo algum a Microsoft, seus autores ou qualquer outra pessoa envolvida na criação, produção ou veiculação dos scripts serão considerados responsáveis por quaisquer danos (incluindo sem limitações danos por perda de lucros comerciais, interrupção de negócios, perda de informações comerciais ou outras perdas pecuniárias) resultantes do uso ou da incapacidade de uso da documentação ou scripts de exemplo, mesmo que a Microsoft tenha sido alertada sobre a possibilidade de tais danos.

Etapa 1: criar um arquivo CSV que contenha informações sobre as pesquisas que você deseja executar

O arquivo CSV (valor separado por vírgula) que você cria nesta etapa contém uma linha para cada usuário que deseja pesquisar. Você pode pesquisar a caixa de correio Exchange Online do usuário (que inclui a caixa de correio de arquivo, se ela estiver habilitada) e seu site OneDrive for Business. Ou você pode pesquisar apenas a caixa de correio ou o site OneDrive for Business. Você também pode pesquisar qualquer site em sua organização do SharePoint Online. O script executado na Etapa 3 criará uma pesquisa separada para cada linha no arquivo CSV.

  1. Copie e cole o texto a seguir em um arquivo .txt usando o NotePad. Salve esse arquivo em uma pasta no computador local. Você salvará os outros scripts nessa pasta também.

    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,
    

    A primeira linha, ou linha de cabeçalho, do arquivo lista os parâmetros que serão usados pelo cmdlet New-ComplianceSearch (no script na Etapa 3) para criar uma nova Pesquisa de Conteúdo. Os nomes dos parâmetros são separados por vírgula. Verifique se não há espaços na linha de cabeçalho. Cada linha sob a linha de cabeçalho representa os valores de parâmetro para cada pesquisa. Certifique-se de substituir os dados de espaço reservado no arquivo CSV pelos dados reais.

  2. Abra o arquivo .txt no Excel e use as informações na tabela a seguir para editar o arquivo com informações para cada pesquisa.


Parâmetro Descrição
ExchangeLocation O endereço SMTP da caixa de correio do usuário.
SharePointLocation A URL do site de OneDrive for Business do usuário ou a URL de qualquer site em sua organização. Para a URL para sites OneDrive for Business, use este formato: https://<your organization>-my.sharepoint.com/personal/<user alias>_<your organization>_onmicrosoft_com. Por exemplo, https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com.
ContentMatchQuery A consulta de pesquisa para a pesquisa. Para obter mais informações sobre como criar uma consulta de pesquisa, consulte Consultas de palavra-chave e condições de pesquisa para Pesquisa de Conteúdo.
StartDate Para email, a data em ou após uma mensagem foi recebida por um destinatário ou enviada pelo remetente. Para documentos no SharePoint ou OneDrive for Business sites, a data em ou após a última modificação de um documento.
EndDate Para email, a data em ou antes de uma mensagem ser enviada por um enviado pelo usuário. Para documentos no SharePoint ou OneDrive for Business sites, a data em ou antes de um documento ser modificado pela última vez.
  1. Salve o arquivo do Excel como um arquivo CSV em uma pasta em seu computador local. O script criado na Etapa 3 usará as informações neste arquivo CSV para criar as pesquisas.

Etapa 2: Conectar-se ao PowerShell de Conformidade do & de Segurança

A próxima etapa é conectar-se ao Security & Compliance PowerShell para sua organização. Para obter instruções passo a passo, confira Conectar-se à Segurança e Conformidade do PowerShell .

Etapa 3: executar o script para criar e iniciar as pesquisas

O script nesta etapa criará uma Pesquisa de Conteúdo separada para cada linha no arquivo CSV que você criou na Etapa 1. Ao executar este script, você será solicitado a obter dois valores:

  • ID do Grupo de Pesquisa – Esse nome fornece uma maneira fácil de organizar as pesquisas criadas a partir do arquivo CSV. Cada pesquisa criada é nomeada com a ID do Grupo de Pesquisa e, em seguida, um número é acrescentado ao nome da pesquisa. Por exemplo, se você inserir ContosoCase para a ID do Grupo de Pesquisa, as pesquisas serão nomeadas ContosoCase_1, ContosoCase_2, ContosoCase_3 e assim por diante. Observe que o nome que você digita é confidencial de caso. Quando você usa a ID do Grupo de Pesquisa na Etapa 4 e Etapa 5, você precisa usar o mesmo caso que quando o criou.

  • Arquivo CSV – O nome do arquivo CSV que você criou na Etapa 1. Certifique-se de incluir o nome de arquivo completo, inclua a extensão de arquivo .csv; por exemplo, ContosoCase.csv.

Para executar o script:

  1. Salve o texto a seguir em um arquivo de script Windows PowerShell usando um sufixo de nome de arquivo de .ps1; por exemplo, CreateSearches.ps1. Salve o arquivo na mesma pasta em que você salvou os outros arquivos.

    # 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. Em Windows PowerShell, vá para a pasta em que você salvou o script na etapa anterior e execute o script; por exemplo:

    .\CreateSearches.ps1
    
  3. No prompt ID do Grupo de Pesquisa , digite um nome de grupo de pesquisa e pressione Enter; por exemplo, ContosoCase. Lembre-se de que esse nome é sensível a casos, portanto, você terá que digitá-lo da mesma maneira nas etapas subsequentes.

  4. No prompt de arquivo CSV de origem , digite o nome do arquivo CSV, incluindo a extensão de arquivo .csv; por exemplo, ContosoCase.csv.

  5. Pressione Enter para continuar executando o script.

    O script exibe o progresso da criação e execução das pesquisas. Quando o script é concluído, ele retorna ao prompt.

    Saída de exemplo da execução do script para criar várias pesquisas de conformidade.

Etapa 4: executar o script para relatar as estimativas de pesquisa

Depois de criar as pesquisas, a próxima etapa é executar um script que exibe um relatório simples do número de acessos de pesquisa para cada pesquisa criada na Etapa 3. O relatório também inclui o tamanho dos resultados de cada pesquisa e o número total de acessos e o tamanho total de todas as pesquisas. Ao executar o script de relatório, você será solicitado para a ID do Grupo de Pesquisa e um nome de arquivo CSV se quiser salvar o relatório em um arquivo CSV.

  1. Salve o texto a seguir em um arquivo de script Windows PowerShell usando um sufixo de nome de arquivo de .ps1; por exemplo, SearchReport.ps1. Salve o arquivo na mesma pasta em que você salvou os outros arquivos.

    $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. Em Windows PowerShell, vá para a pasta em que você salvou o script na etapa anterior e execute o script; por exemplo:

    .\SearchReport.ps1
    
  3. No prompt ID do Grupo de Pesquisa , digite um nome de grupo de pesquisa e pressione Enter; por exemplo ContosoCase. Lembre-se de que esse nome é sensível a casos, portanto, você terá que digitá-lo da mesma maneira que fez quando executou o script na Etapa 3.

  4. No caminho do arquivo para salvar o relatório em um arquivo CSV (deixe em branco apenas para exibir o relatório), digite um nome de arquivo do caminho de nome de arquivo completo (incluindo a extensão de arquivo .csv) se você quiser salvar o relatório em um arquivo CSV. nome do arquivo CSV, incluindo a extensão de arquivo .csv. Por exemplo, você pode digitar ContosoCaseReport.csv para salvá-lo no diretório atual ou pode digitar C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv para salvá-lo em uma pasta diferente. Você também pode deixar o prompt em branco para exibir o relatório, mas não salvá-lo em um arquivo.

  5. Pressione Enter.

    O script exibe o progresso da criação e execução das pesquisas. Quando o script é concluído, o relatório é exibido.

    Execute o relatório de pesquisa para exibir as estimativas do grupo de pesquisa.

Observação

Se a mesma caixa de correio ou site for especificado como um local de conteúdo em mais de uma pesquisa em um grupo de pesquisa, a estimativa total de resultados no relatório (para o número de itens e o tamanho total) poderá incluir resultados para os mesmos itens. Isso ocorre porque a mesma mensagem de email ou documento será contado mais de uma vez se corresponder à consulta para pesquisas diferentes no grupo de pesquisa.

Etapa 5: executar o script para excluir as pesquisas

Como você pode estar criando muitas pesquisas, este último script só facilita a exclusão rápida das pesquisas criadas na Etapa 3. Assim como os outros scripts, este também solicita a ID do Grupo de Pesquisa. Todas as pesquisas com a ID do Grupo de Pesquisa no nome da pesquisa serão excluídas quando você executar esse script.

  1. Salve o texto a seguir em um arquivo de script Windows PowerShell usando um sufixo de nome de arquivo de .ps1; por exemplo, DeleteSearches.ps1. Salve o arquivo na mesma pasta em que você salvou os outros arquivos.

    # 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. Em Windows PowerShell, vá para a pasta em que você salvou o script na etapa anterior e execute o script; por exemplo:

    .\DeleteSearches.ps1
    
  3. No prompt ID do Grupo de Pesquisa , digite um nome de grupo de pesquisa para as pesquisas que você deseja excluir e pressione Enter; por exemplo, ContosoCase. Lembre-se de que esse nome é sensível a casos, portanto, você terá que digitá-lo da mesma maneira que fez quando executou o script na Etapa 3.

    O script exibe o nome de cada pesquisa excluída.

    Execute o script para excluir as pesquisas no grupo de pesquisa.