Creare, analizzare ed eliminare più ricerche di contenuto

La creazione rapida di ricerche di individuazione e dei relativi report costituisce spesso un importante passaggio in eDiscovery e nelle indagini quando si vuole saperne di più sui dati sottostanti e sulla complessità e la qualità delle ricerche. A tale scopo, nel Centro sicurezza e conformità di Office 365 è disponibile un set di cmdlet di Windows PowerShell per automatizzare le attività di ricerca contenuto più complesse. Questi script consentono di creare in modo semplice e rapido numerose ricerche e quindi di eseguire report dei risultati della ricerca stimati per determinare la quantità di dati interessati. Gli script consentono anche di creare versioni diverse delle ricerche per confrontare i risultati prodotti da ognuna di esse. Grazie a questi script è possibile identificare e scegliere i dati in modo rapido ed efficace.

Questo argomento include gli script che è possibile eseguire per creare, avviare ed eliminare, nonché creare report relativi a più ricerche. Ecco una panoramica del processo:

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

Passaggio 2: Connettersi al Centro sicurezza e conformità con una sessione remota di PowerShell

Passaggio 3: Eseguire lo script per creare e avviare la ricerca

Passaggio 4: Eseguire lo script per creare un report sulle stime della ricerca

Passaggio 5: Eseguire lo script per eliminare le ricerche

Prima di iniziare

  • Per eseguire gli script descritti in questo argomento, è necessario essere membro del gruppo di ruoli Responsabile di eDiscovery nel Centro sicurezza e conformità.

  • Per raccogliere un elenco degli URL dei siti di OneDrive for Business nell'organizzazione da aggiungere al file CSV nel passaggio 1, usare lo script nel passaggio 2 dell'articolo Assegnare autorizzazioni eDiscovery ai siti di OneDrive for Business. Questo script crea un file di testo che contiene un elenco di tutti i siti di OneDrive for Business. Per eseguirlo, è necessario installare e usare SharePoint Online Management Shell (vedere il passaggio 1 dell'argomento precedente). Sarà quindi possibile usare questi URL nel file CSV creato nel passaggio 1.

  • Assicurarsi di salvare nella stessa cartella tutti i file creati in questo argomento. In tal modo risulterà più agevole eseguire lo script.

  • Gli script includono funzionalità minime di gestione degli errori. Vengono usati principalmente per creare, analizzare 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. Vengono fornito COSÌ COME SONO senza garanzie di alcun tipo. 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, nella produzione o nella distribuzione degli script potranno essere ritenuti responsabili per eventuali danni di qualsiasi tipo (tra cui, senza limitazioni, danni per perdita di informazioni aziendali o profitti, interruzione dell'attività o altre perdite economiche) derivanti dall'uso o dall'impossibilità a usare gli script di esempio o la documentazione, anche se Microsoft è stata avvisata della possibilità di tali danni.

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

Il file CSV creato in questo passaggio contiene una riga per ogni utente da includere nella ricerca. È possibile cercare nella cassetta postale di Exchange Online dell'utente, che include la cassetta postale di archiviazione, se abilitata, nonché nel relativo sito di OneDrive for Business. In alternativa, è possibile limitare la ricerca alla sola cassetta postale o al sito di OneDrive for Business. È anche possibile eseguire ricerche nei siti dell'organizzazione di SharePoint Online. Con lo script eseguito nel passaggio 3 verrà creata una ricerca distinta per ogni riga del file CSV.

  1. Copiare e incollare il testo seguente in un file con estensione txt tramite il Blocco note. Salvare questo file in una cartella nel computer locale. Anche gli altri script verranno salvati nella stessa 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 del passaggio 3 per creare una nuova ricerca di contenuto. I nomi dei parametri sono separati da una virgola. Assicurarsi che la riga di intestazione non contenga spazi. Ogni riga sotto la riga di intestazione rappresenta i valori dei parametri relativi alla singola ricerca. Assicurarsi di sostituire i dati segnaposto nel file CSV con i dati effettivi.

  2. Aprire il file con estensione txt in Microsoft Excel e quindi usare le informazioni nella tabella seguente per modificare il file con le informazioni relative alla singola ricerca.

    Parametro

    Descrizione

    ExchangeLocation

    Indirizzo SMTP della cassetta postale dell'utente.

    SharePointLocation

    URL del sito di OneDrive for Business dell'utente o di un qualsiasi sito dell'organizzazione. Per l'URL dei siti di OneDrive for Business 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 altre informazioni sulla creazione di una query di ricerca, vedere Query con parola chiave e condizioni di ricerca per Ricerca contenuto.

    StartDate

    Per la posta elettronica, data esatta o successiva a quella in cui è stato ricevuto un messaggio da un destinatario o è stato inviato un messaggio dal mittente. Per i documenti in siti di SharePoint o di OneDrive for Business, data esatta o successiva a quella dell'ultima modifica di un documento.

    EndDate

    Per la posta elettronica, data esatta o precedente a quella in cui un messaggio è stato inviato dall'utente. Per i documenti in siti di SharePoint o OneDrive for Business, data esatta o precedente a quella dell'ultima modifica di un documento.

  3. Salvare il file di Excel come file CSV in una cartella nel computer locale. Le informazioni presenti in questo file CSV verranno usate nello script creato nel passaggio 3 per creare le ricerche.

Inizio pagina

Passaggio 2: Connettersi al Centro sicurezza e conformità con una sessione remota di PowerShell

Il passaggio successivo consiste nel connettere Windows PowerShell al Centro sicurezza e conformità per l'organizzazione.

  1. Salvare il testo seguente in un file script di Windows PowerShell usando il suffisso del nome file ps1, ad esempio ConnectSCC.ps1. Salvare il file nella stessa cartella in cui è stato salvato il file CSV nel passaggio 1.

    # 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. Nel computer locale aprire Windows PowerShell, passare alla cartella in cui si trova lo script creato nel passaggio precedente e quindi eseguirlo, ad esempio:

    .\ConnectSCC.ps1

Inizio pagina

Passaggio 3: Eseguire lo script per creare e avviare la ricerca

Con lo script eseguito in questo passaggio verrà creata una ricerca di contenuto distinta per ogni riga del file CSV creato nel passaggio 1. Quando si esegue questo script, verranno richiesti due valori:

  • ID del gruppo di ricerca   Questo nome consente di organizzare facilmente le ricerche create dal file CSV. A ogni ricerca creata viene assegnato come nome l'ID del gruppo di ricerca e al nome della ricerca viene quindi aggiunto un numero. Se ad esempio si immette ContosoCase come ID del gruppo di ricerca, i nomi assegnati alle ricerche saranno 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 del gruppo di ricerca nei passaggi 4 e 5, è necessario usare la stessa combinazione di maiuscole/minuscole specificata quando è stato creato.

  • File CSV   Il nome del file CSV creato nel passaggio 1. Assicurarsi di usare il nome file completo, includendo anche l'estensione csv, ad esempio ContosoCase.csv.

  1. Salvare il testo seguente in un file script di Windows PowerShell usando il suffisso del nome file ps1, ad esempio CreateSearches.ps1. 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. Quando viene visualizzato il prompt Search Group ID, digitare un nome di gruppo di ricerca e premere INVIO, ad esempio ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi è necessario usare la stessa combinazione di maiuscole/minuscole quando verrà digitato nei passaggi successivi.

  4. Quando viene visualizzato il prompt Source CSV file, digitare il nome del file CSV, includendo l'estensione csv, ad esempio ContosoCase.csv.

  5. Premere INVIO per continuare con l'esecuzione dello script.

    Lo script consente di visualizzare lo stato delle operazioni di creazione ed esecuzione delle ricerche. Una volta completato lo script, viene nuovamente visualizzato il prompt.

    Esempio di output dell'esecuzione dello script per creare più ricerche di conformità

Inizio pagina

Passaggio 4: Eseguire lo script per creare un report sulle stime della ricerca

Dopo aver creato le ricerche, il passaggio successivo consiste nell'eseguire uno script che consente di visualizzare un semplice report relativo al numero di occorrenze trovate per ogni ricerca creata nel passaggio 3. Il report include anche le dimensioni dei risultati per ogni ricerca e il numero totale delle occorrenze, nonché le dimensioni totali di tutte le ricerche. Quando si esegue lo script di creazione report, viene richiesto di specificare l'ID del gruppo di ricerca e il nome di un file CSV se si vuole salvare il report in un file in questo formato.

  1. Salvare il testo seguente in un file script di Windows PowerShell usando il suffisso del nome file ps1, ad esempio SearchReport.ps1. 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. Quando viene visualizzato il prompt Search Group ID, digitare un nome di gruppo di ricerca e premere INVIO, ad esempio ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi deve essere identico a quello digitato quando è stato eseguito lo script nel passaggio 3.

  4. Quando viene visualizzato il prompt File path to save the report to a CSV file (leave blank to just display the report), digitare un nome di file CSV con percorso completo, includendo l'estensione csv, se si vuole salvare il report in un file in questo formato. È ad esempio possibile digitare ContosoCaseReport.csv per salvare il file nella directory corrente oppure C:\Users\admin\OneDrive for Business\ContosoCase\ContosoCaseReport.csv per salvarlo in una cartella diversa. È anche possibile non specificare alcun valore al prompt per visualizzare il report, ma non salvarlo in un file.

  5. Premere INVIO.

    Lo script consente di visualizzare lo stato delle operazioni di creazione ed esecuzione delle ricerche. Una volta completato lo script, viene visualizzato il report.

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

Inizio pagina

Nota: Se si specifica la stessa cassetta postale o lo stesso sito come percorso contenuto in più di una ricerca di un gruppo di ricerca, la stima dei risultati totali nel report (relativa sia al numero di elementi che alle dimensioni totali) potrebbe includere i risultati per gli stessi elementi. Lo stesso messaggio di posta elettronica o lo stesso documento verranno infatti conteggiati più volte se corrispondono alla query di ricerche diverse nel gruppo di ricerca.

Passaggio 5: Eseguire lo script per eliminare le ricerche

Questo ultimo script consente di eliminare facilmente le ricerche create nel passaggio 3. Analogamente agli altri script, anche in questo viene richiesto di specificare l'ID del gruppo di ricerca. Quando si esegue lo script, verranno eliminate tutte le ricerche nel cui nome è presente l'ID del gruppo di ricerca.

  1. Salvare il testo seguente in un file script di Windows PowerShell usando il suffisso del nome file ps1, ad esempio DeleteSearches.ps1. 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. Quando viene visualizzato il prompt Search Group ID, digitare un nome di gruppo di ricerca per le ricerche da eliminare e premere INVIO, ad esempio ContosoCase. Tenere presente che questo nome fa distinzione tra maiuscole e minuscole, quindi deve essere identico a quello digitato quando è stato eseguito lo script nel passaggio 3.

    Lo script visualizza il nome delle singole ricerche eliminate.

    Eseguire lo script per eliminare le ricerche nel gruppo di ricerca

Inizio pagina

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×