Creare, analizzare ed eliminare più ricerche di contenuto

La creazione rapida e la creazione di report di ricerche di individuazione è spesso un passaggio importante in eDiscovery e nelle indagini quando si tenta di conoscere i dati sottostanti e la ricchezza e la qualità delle ricerche. A tale scopo, Security & Compliance PowerShell offre un set di cmdlet per automatizzare le attività di Ricerca contenuto che richiedono molto tempo. Questi script offrono un modo semplice e rapido per creare una serie di ricerche e quindi eseguire report dei risultati di ricerca stimati che consentono di determinare la quantità di dati in questione. È anche possibile usare gli script per creare versioni diverse delle ricerche per confrontare i risultati prodotti da ognuno di essi. Questi script consentono di identificare ed eliminare i dati in modo rapido ed efficiente.

Consiglio

Se non si è un cliente E5, usare la versione di valutazione delle soluzioni Microsoft Purview di 90 giorni per esplorare in che modo funzionalità aggiuntive di Purview possono aiutare l'organizzazione a gestire le esigenze di sicurezza e conformità dei dati. Iniziare ora dall'hub delle versioni di valutazione Portale di conformità di Microsoft Purview. Informazioni dettagliate sull'iscrizione e le condizioni di valutazione.

  • È necessario essere un membro del gruppo di ruoli di eDiscovery Manager nel Portale di conformità di Microsoft Purview per eseguire gli script descritti in questo argomento.
  • Per raccogliere un elenco degli URL per i siti OneDrive for Business nell'organizzazione che è possibile aggiungere al file CSV nel passaggio 1, vedere Creare un elenco di tutte le posizioni di OneDrive nell'organizzazione.
  • Assicurarsi di salvare tutti i file creati in questo argomento nella stessa cartella. In questo modo sarà più semplice eseguire gli script.
  • Gli script includono la gestione minima degli errori. Lo scopo principale è creare rapidamente, creare report ed eliminare più ricerche di contenuto.
  • Gli script di esempio forniti in questo argomento non sono supportati in alcun programma o servizio di supporto standard Microsoft. Gli script di esempio sono forniti così come sono senza alcun tipo di garanzia. Microsoft esclude inoltre qualsiasi garanzia implicita, tra cui, senza limitazioni, tutte le garanzie implicite di commerciabilità o idoneità per uno scopo specifico. L'utente assume tutti i rischi associati all'uso o alle prestazioni degli script di esempio e della documentazione. In nessun caso Microsoft, i suoi autori o chiunque altro coinvolto nella creazione, produzione o consegna degli script è da ritenersi responsabile per qualsiasi danno eventuale (inclusi, senza limitazione alcuna, danni riguardanti profitti aziendali, interruzione di attività, perdita di informazioni aziendali o altra perdita pecuniaria) derivanti dall'utilizzo o dall'incapacità di utilizzo degli script di esempio e della documentazione, anche nel caso in cui Microsoft sia stata avvisata della possibilità di tali danni.

Passaggio 1: Creare un file CSV contenente informazioni sulle ricerche da eseguire

Il file CSV (Comma Separated Value) creato in questo passaggio contiene una riga per ogni utente che desidera eseguire la ricerca. È possibile eseguire ricerche nella cassetta postale Exchange Online dell'utente (che include la cassetta postale di archiviazione, se abilitata) e nel sito OneDrive for Business. In alternativa, è possibile cercare solo la cassetta postale o il sito OneDrive for Business. È anche possibile eseguire ricerche in qualsiasi sito dell'organizzazione di SharePoint Online. Lo script eseguito nel passaggio 3 creerà una ricerca separata per ogni riga nel file CSV.

  1. Copiare e incollare il testo seguente in un file .txt tramite Blocco note. Salvare questo file in una cartella nel computer locale. Verranno salvati anche gli altri script in questa cartella.

    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,
    

    La prima riga, o riga di intestazione, del file elenca i parametri che verranno usati dal cmdlet New-ComplianceSearch (nello script nel passaggio 3) per creare una nuova ricerca contenuto. Ogni nome di parametro è separato da una virgola. Assicurarsi che non siano presenti spazi nella riga di intestazione. Ogni riga sotto la riga di intestazione rappresenta i valori dei parametri per ogni ricerca. Assicurarsi di sostituire i dati segnaposto nel file CSV con i dati effettivi.

  2. Aprire il file .txt in Excel e quindi usare le informazioni nella tabella seguente per modificare il file con le informazioni per ogni ricerca.


Parametro Descrizione
ExchangeLocation Indirizzo SMTP della cassetta postale dell'utente.
SharePointLocation URL per il sito OneDrive for Business dell'utente o URL per qualsiasi sito dell'organizzazione. Per l'URL per OneDrive for Business siti, usare il formato seguente: https://<your organization>-my.sharepoint.com/personal/<user alias>_<your organization>_onmicrosoft_com. Ad esempio, https://contoso-my.sharepoint.com/personal/sarad_contoso_onmicrosoft_com.
ContentMatchQuery Query di ricerca per la ricerca. Per altre informazioni sulla creazione di una query di ricerca, vedere Query con parole chiave e condizioni di ricerca per Ricerca contenuto.
StartDate Per il messaggio di posta elettronica, la data o dopo la ricezione di un messaggio da parte di un destinatario o l'invio da parte del mittente. Per i documenti in SharePoint o OneDrive for Business siti, la data dell'ultima modifica di un documento o successiva.
EndDate Per il messaggio di posta elettronica, la data o prima dell'invio di un messaggio da parte di un inviato dall'utente. Per i documenti in SharePoint o OneDrive for Business siti, la data dell'ultima modifica o dell'ultima modifica di un documento.
  1. Salvare il file di Excel come file CSV in una cartella nel computer locale. Lo script creato nel passaggio 3 userà le informazioni contenute in questo file CSV per creare le ricerche.

Passaggio 2: Connettersi a PowerShell sicurezza & conformità

Il passaggio successivo consiste nel connettersi a Security & Compliance PowerShell per l'organizzazione. Per ottenere istruzioni dettagliate, vedere Connettersi a PowerShell in Sicurezza e conformità.

Passaggio 3: Eseguire lo script per creare e avviare le ricerche

Lo script in questo passaggio creerà una ricerca di contenuto separata per ogni riga nel file CSV creato nel passaggio 1. Quando si esegue questo script, verranno richiesti due valori:

  • ID gruppo di ricerca : questo nome offre un modo semplice per organizzare le ricerche create dal file CSV. Ogni ricerca creata viene denominata con l'ID gruppo di ricerca e quindi viene aggiunto un numero al nome della ricerca. Ad esempio, se si immette ContosoCase come ID gruppo di ricerca, le ricerche vengono denominate ContosoCase_1, ContosoCase_2, ContosoCase_3 e così via. Si noti che il nome digitato fa distinzione tra maiuscole e minuscole. Quando si usa l'ID gruppo di ricerca nei passaggi 4 e 5, è necessario usare lo stesso caso in cui è stato creato.

  • File CSV : nome del file CSV creato nel passaggio 1. Assicurarsi di includere l'uso del nome file completo, includere l'estensione del file .csv; Ad esempio, ContosoCase.csv.

Per eseguire lo script:

  1. Salvare il testo seguente in un file di script Windows PowerShell usando un suffisso di nome file di .ps1, CreateSearches.ps1ad esempio . Salvare il file nella stessa cartella in cui sono stati salvati gli altri file.

    # 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. In Windows PowerShell passare alla cartella in cui è stato salvato lo script nel passaggio precedente e quindi eseguire lo script, ad esempio:

    .\CreateSearches.ps1
    
  3. Al prompt dell'ID gruppo di ricerca digitare un nome del gruppo di ricerca e quindi premere INVIO; Ad esempio, ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi dovrai digitarlo allo stesso modo nei passaggi successivi.

  4. Al prompt del file CSV di origine digitare il nome del file CSV, inclusa l'estensione del file .csv; Ad esempio, ContosoCase.csv.

  5. Premere INVIO per continuare a eseguire lo script.

    Lo script visualizza lo stato di avanzamento della creazione e dell'esecuzione delle ricerche. Al termine, lo script torna al prompt.

    Output di esempio dall'esecuzione dello script per creare più ricerche di conformità.

Passaggio 4: Eseguire lo script per segnalare le stime di ricerca

Dopo aver creato le ricerche, il passaggio successivo consiste nell'eseguire uno script che visualizza un semplice report del numero di riscontri di ricerca per ogni ricerca creata nel passaggio 3. Il report include anche le dimensioni dei risultati per ogni ricerca e il numero totale di riscontri e le dimensioni totali di tutte le ricerche. Quando si esegue lo script di creazione report, verranno richiesti l'ID gruppo di ricerca e un nome file CSV se si vuole salvare il report in un file CSV.

  1. Salvare il testo seguente in un file di script Windows PowerShell usando un suffisso di nome file di .ps1, SearchReport.ps1ad esempio . Salvare il file nella stessa cartella in cui sono stati salvati gli altri file.

    $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. In Windows PowerShell passare alla cartella in cui è stato salvato lo script nel passaggio precedente e quindi eseguire lo script, ad esempio:

    .\SearchReport.ps1
    
  3. Al prompt dell'ID gruppo di ricerca digitare un nome del gruppo di ricerca e quindi premere INVIO; ad esempio ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi è necessario digitarlo nello stesso modo in cui è stato eseguito lo script nel passaggio 3.

  4. Al prompt Percorso file per salvare il report in un file CSV (lasciare vuoto per visualizzare solo il report), digitare un nome file con il percorso completo del nome file (inclusa l'estensione del file .csv) se si desidera salvare il report in un file CSV. nome del file CSV, inclusa l'estensione del file .csv. Ad esempio, è possibile digitare ContosoCaseReport.csv per salvarlo nella directory corrente oppure digitare C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv per salvarlo in una cartella diversa. È anche possibile lasciare vuoto il prompt per visualizzare il report, ma non salvarlo in un file.

  5. Premere INVIO.

    Lo script visualizza lo stato di avanzamento della creazione e dell'esecuzione delle ricerche. Al termine dello script, viene visualizzato il report.

    Eseguire il report di ricerca per visualizzare le stime per il gruppo di ricerca.

Nota

Se la stessa cassetta postale o sito viene specificata come posizione di contenuto in più ricerche in un gruppo di ricerca, la stima totale dei risultati nel report (sia per il numero di elementi che per le dimensioni totali) potrebbe includere risultati per gli stessi elementi. Questo perché lo stesso messaggio di posta elettronica o lo stesso documento verrà conteggiato più volte se corrisponde alla query per ricerche diverse nel gruppo di ricerca.

Passaggio 5: Eseguire lo script per eliminare le ricerche

Poiché si potrebbero creare molte ricerche, questo ultimo script semplifica semplicemente l'eliminazione rapida delle ricerche create nel passaggio 3. Come gli altri script, anche questo richiede l'ID gruppo di ricerca. Tutte le ricerche con l'ID gruppo di ricerca nel nome della ricerca verranno eliminate quando si esegue questo script.

  1. Salvare il testo seguente in un file di script Windows PowerShell usando un suffisso di nome file di .ps1, DeleteSearches.ps1ad esempio . Salvare il file nella stessa cartella in cui sono stati salvati gli altri file.

    # 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. In Windows PowerShell passare alla cartella in cui è stato salvato lo script nel passaggio precedente e quindi eseguire lo script, ad esempio:

    .\DeleteSearches.ps1
    
  3. Al prompt dell'ID gruppo di ricerca digitare un nome del gruppo di ricerca per le ricerche che si desidera eliminare e quindi premere INVIO; Ad esempio, ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi è necessario digitarlo nello stesso modo in cui è stato eseguito lo script nel passaggio 3.

    Lo script visualizza il nome di ogni ricerca eliminata.

    Eseguire lo script per eliminare le ricerche nel gruppo di ricerca.