Usare uno script per aggiungere utenti a un blocco in un caso di eDiscovery nel Centro sicurezza e conformità di Office 365

Il Centro sicurezza e conformità di Office 365 offre molti cmdlet di Windows PowerShell che permettono di automatizzare attività prolungate correlate alla creazione e alla gestione di casi di eDiscovery. Attualmente, l'uso dello strumento per i casi di eDiscovery nel Centro sicurezza e conformità per applicare un blocco a un numero elevato di percorsi di contenuto dei responsabili correlati richiede tempo e preparazione. Prima di creare un blocco, ad esempio, è necessario raccogliere l'URL per ogni sito di OneDrive for Business che si vuole bloccare. Per ogni utente da bloccare, è quindi necessario aggiungere la cassetta postale e il sito di OneDrive for Business al blocco. Nelle versioni future del Centro sicurezza e conformità questa operazione verrà semplificata. Fino ad allora, è possibile usare lo script fornito in questo articolo per automatizzare il processo.

Questo script chiede di specificare il nome del dominio del sito personale dell'organizzazione, ad esempio contoso nell'URL https://contoso-my.sharepoint.com, il nome di un caso di eDiscovery esistente, il nome del nuovo blocco associato al caso, un elenco di indirizzi di posta elettronica degli utenti da bloccare e una query di ricerca da usare se si vuole creare un blocco basato su query. Lo script recupera quindi l'URL del sito di OneDrive for Business per ogni utente presente nell'elenco, crea il nuovo blocco e quindi aggiunge al blocco la cassetta postale e il sito di OneDrive for Business per ogni utente incluso nell'elenco. Lo script genera anche file di log che contengono informazioni sul nuovo blocco.

Ecco i passaggi della procedura:

Passaggio 1: Installare SharePoint Online Management Shell

Passaggio 2: Generare un elenco di utenti

Passaggio 3: Eseguire lo script per creare un blocco e aggiungere utenti

Prima di iniziare

  • Per eseguire lo script fornito nel passaggio 3, è necessario essere un membro del gruppo di ruoli Responsabile di eDiscovery nel Centro sicurezza e conformità e un amministratore globale di SharePoint Online. Per altre informazioni, vedere Assegnare le autorizzazioni di eDiscovery nel Centro sicurezza e conformità di Office 365.

  • A un blocco associato a un caso di eDiscovery nel Centro sicurezza e conformità è possibile aggiungere un massimo di 1.000 cassette postali e 100 siti. Presupponendo che ogni utente che si vuole bloccare abbia un sito di OneDrive for Business, è possibile aggiungere un massimo di 100 utenti a un blocco usando lo script fornito in questo articolo.

  • Assicurarsi di salvare nella stessa cartella l'elenco di utenti creati nel passaggio 2 e lo script del passaggio 3. In questo modo, sarà più facile eseguire lo script.

  • Lo script aggiunge l'elenco di utenti a un nuovo blocco associato a un caso esistente. Prima di eseguire lo script, assicurarsi che sia stato creato il caso che si vuole associare al blocco.

  • Lo script include funzionalità minime di gestione degli errori e viene usato principalmente per bloccare in tutta semplicità la cassetta postale e il sito di OneDrive for Business di ogni utente.

  • Gli script di esempio forniti in questo argomento non sono supportati in alcun programma o servizi 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.

Inizio pagina

Passaggio 1: Installare Shell di gestione SharePoint Online

Il primo passaggio consiste nell'installare SharePoint Online Management Shell, se non è già installato nel computer locale. La shell non deve essere usata in questa procedura, ma è necessario installarla perché contiene i prerequisiti dello script eseguito nel passaggio 3. Questi prerequisiti permettono allo script di comunicare con SharePoint Online per ottenere gli URL dei siti di OneDrive for Business.

Passare a Configurare l'ambiente di Windows PowerShell per SharePoint Online Management Shell ed eseguire i passaggi 1 e 2 per installare SharePoint Online Management Shell nel computer locale.

Inizio pagina

Passaggio 2: Generare un elenco di utenti

Lo script nel passaggio 3 crea un blocco associato a un caso di eDiscovery e quindi aggiunge al blocco le cassette postali e i siti di OneDrive for Business di un elenco di utenti. È possibile digitare gli indirizzi di posta elettronica in un file oppure eseguire un comando in Windows PowerShell per ottenere un elenco di indirizzi e salvarli in un file, nella stessa cartella in cui verrà salvato lo script nel passaggio 3.

Ecco un comando di PowerShell (eseguito tramite la sessione remota di PowerShell connessa all'organizzazione di Exchange Online) per ottenere un elenco di indirizzi di posta elettronica per tutti gli utenti dell'organizzazione e salvarlo in un file di testo denominato HoldUsers.txt.

Get-Mailbox -ResultSize unlimited -Filter { RecipientTypeDetails -eq 'UserMailbox'} | Select-Object PrimarySmtpAddress > HoldUsers.txt

Dopo aver eseguito questo comando, aprire il file di testo e rimuovere l'intestazione che contiene il nome di proprietà PrimarySmtpAddress. Rimuovere quindi tutti gli indirizzi di posta elettronica eccetto quelli degli utenti da aggiungere al blocco che verrà creato nel passaggio 3. Verificare che non siano presenti righe vuote prima e dopo l'elenco di indirizzi di posta elettronica.

Inizio pagina

Passaggio 3: Eseguire lo script per creare un blocco e aggiungere utenti

Quando si esegue lo script in questo passaggio, verranno richieste le informazioni seguenti. Assicurarsi di avere a disposizione queste informazioni prima di eseguire lo script.

  • Credenziali utente   Lo script userà le credenziali per connettersi al Centro sicurezza e conformità con la sessione remota di PowerShell. Userà le credenziali anche per accedere a SharePoint Online e ottenere gli URL di OneDrive for Business per l'elenco di utenti.

  • Nome del dominio del sito personale   Il dominio del sito personale contiene tutti i siti di OneDrive for Business dell'organizzazione. Se, ad esempio, l'URL del dominio del sito personale è https://contoso-my.sharepoint.com, è necessario immettere contoso quando lo script chiede di specificare il nome del dominio del sito personale.

  • Nome del caso   Nome di un caso esistente. Lo script creerà un nuovo blocco associato al caso.

  • Nome del blocco   Nome del blocco che lo script creerà e assocerà al caso specificato.

  • Query di ricerca per un blocco basato su query   È possibile creare un blocco basato su query in modo che il blocco verrà applicato solo al contenuto che soddisfa i criteri di ricerca specificati. Per applicare un blocco a tutto il contenuto, premere INVIO quando viene chiesto di immettere una query di ricerca.

  • Attivazione o meno del blocco   È possibile fare in modo che lo script attivi il blocco dopo la sua creazione oppure che lo script crei il blocco senza abilitarlo. Se lo script non attiva il blocco, è possibile attivarlo successivamente nel Centro sicurezza e conformità o eseguendo i comandi di PowerShell seguenti:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
  • Nome del file di testo con l'elenco di utenti   Nome del file di testo del passaggio 2 che contiene l'elenco di utenti da aggiungere al blocco. Se questo file si trova nella stessa cartella dello script, è sufficiente digitare il nome del file, ad esempio HoldUsers.txt. Se il file di testo si trova in un'altra cartella, digitarne il percorso completo.

Dopo aver raccolto le informazioni che verranno chieste dallo script, il passaggio finale consiste nell'eseguire lo script per creare il nuovo blocco e aggiungervi gli utenti.

  1. Salvare il testo seguente in un file di script di Windows PowerShell usando il suffisso .ps1, ad esempio AddUsersToHold.ps1.

    #script begin
    " " 
    write-host "***********************************************"
    write-host "   Office 365 Security & Compliance Center   " -foregroundColor yellow -backgroundcolor darkgreen
    write-host "   eDiscovery cases - Add users to a hold   " -foregroundColor yellow -backgroundcolor darkgreen 
    write-host "***********************************************"
    " " 
    # Get user credentials & Connect to Office 365 SCC, SPO
    
    $credentials = Get-Credential -Message "Specify your credentials to connect to the Office 365 Security & Compliance Center and SharePoint Online"
    $s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.compliance.protection.outlook.com/powershell-liveid" -Credential $credentials -Authentication Basic -AllowRedirection -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)
    $a = Import-PSSession $s -AllowClobber
    
        if (!$s)
        {
            Write-Error "Couldn't create PowerShell session."
            return;
        }
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to http://go.microsoft.com/fwlink/p/?LinkId=255251
    if (!$SharePointClient -or !$SPRuntime -or !$SPUserProfile)
    {
        $SharePointClient = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
        $SPRuntime = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
        $SPUserProfile = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
    
        if (!$SharePointClient)
        {
            Write-Error "The SharePoint Online Management Shell isn't installed. Please install it from: http://go.microsoft.com/fwlink/p/?LinkId=255251 and then re-run this script."
            return;
        }
    }
    
    if (!$spCreds)
    {
        $spCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName, $credentials.Password)
    }
    
    # Get the user's MySite domain name. We use this to create the admin URL and root URL for OneDrive for Business
    ""
    $mySiteDomain = Read-Host "Enter the name of your organization's MySite domain. For example, 'contoso' for 'https://contoso-my.sharepoint.com'"
    ""
    
    # Get other required information
    do{
    $casename = Read-Host "Enter the name of the case"
    $caseexists = (get-compliancecase -identity "$casename" -erroraction SilentlyContinue).isvalid
    if($caseexists -ne 'True')
    {""
    write-host "A case named '$casename' doesn't exist. Please specify the name of an existing case, or create a new case and then re-run the script." -foregroundColor Yellow
    ""}
    }While($caseexists -ne 'True')
    
    ""
    do{
    $holdName = Read-Host "Enter the name of the new hold"
    $holdexists=(get-caseholdpolicy -identity "$holdname" -case "$casename" -erroraction SilentlyContinue).isvalid
    if($holdexists -eq 'True')
    {""
    write-host "A hold named '$holdname' already exists. Please specify a new hold name." -foregroundColor Yellow
    ""}
    }While($holdexists -eq 'True')
    
    ""
    $holdQuery = Read-Host "Enter a search query to create a query-based hold, or press Enter to hold all content"
    ""
    $holdstatus = read-host "Do you want the hold enabled after it's created? (Yes/No)"
    
    do{
    ""
    $inputfile = read-host "Enter the name of the text file that contains the email addresses of the users to add to the hold"
    ""
    $fileexists = test-path -path $inputfile
    if($fileexists -ne 'True'){write-host "$inputfile doesn't exist. Please enter a valid file name." -foregroundcolor Yellow}
    }while($fileexists -ne 'True')
    
    #Import the list of addresses from the txt file.  Trim any excess spaces and make sure all addresses 
        #in the list are unique.
    	[array]$emailAddresses = Get-Content $inputfile -ErrorAction SilentlyContinue | where {$_.trim() -ne ""}  | foreach{ $_.Trim() }
    	[int]$dupl = $emailAddresses.count
    	[array]$emailAddresses = $emailAddresses | select-object -unique
    	$dupl -= $emailAddresses.count
    
    #Validate email addresses so the hold creation does not run in to an error.
    if($emailaddresses.count -gt 0){
    write-host ($emailAddresses).count "addresses were found in the text file. There were $dupl duplicate entries in the file." -foregroundColor Yellow
    ""
    Write-host "Validating the email addresses. Please wait..." -foregroundColor Yellow
    ""
    $finallist =@()
    foreach($emailAddress in $emailAddresses)
    {
    if((get-recipient $emailaddress -erroraction SilentlyContinue).isvalid -eq 'True')
    {$finallist += $emailaddress}
    else {"Unable to find the user $emailaddress"
    [array]$excludedlist += $emailaddress}
    }
    ""
    #find user's OneDrive Site URL using email address
    Write-Host "Getting the URL for each user's OneDrive for Business site." -foregroundColor Yellow
    ""
    $AdminUrl = "https://$mySiteDomain-admin.sharepoint.com"
    $mySiteUrlRoot = "https://$mySiteDomain-my.sharepoint.com"
    
    # Add the path of the User Profile Service to the SPO admin URL, then create a new webservice proxy to access it
    $proxyaddr = "$AdminUrl/_vti_bin/UserProfileService.asmx?wsdl"
    $UserProfileService= New-WebServiceProxy -Uri $proxyaddr -UseDefaultCredential False
    $UserProfileService.Credentials = $credentials
    
    # Take care of auth cookies
    $strAuthCookie = $spCreds.GetAuthenticationCookie($AdminUrl)
    $uri = New-Object System.Uri($AdminUrl)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    $urls = @()
    foreach($emailAddress in $emailAddresses)
    {
          try{
            $prop = $UserProfileService.GetUserProfileByName("i:0#.f|membership|$emailAddress") | Where-Object { $_.Name -eq "PersonalSpace" }
            $url = $prop.values[0].value
    		if($url -ne $null){
            $furl = $mySiteUrlRoot + $url
            $urls += $furl
            Write-Host "- $emailAddress => $furl"
    		[array]$ODadded += $furl}
    	else{    
            Write-Warning "Couldn't locate OneDrive for $emailAddress"
    		[array]$ODExluded += $emailAddress
        }}
    	catch { 
    	Write-Warning "Could not locate OneDrive for $emailAddress"
    	[array]$ODExluded += $emailAddress
    	Continue }
    }
    
    if(($finallist.count -gt 0) -or ($urls.count -gt 0)){
    ""
    Write-Host "Creating the hold named $holdname. Please wait..." -foregroundColor Yellow
    if(($holdstatus -eq "Y") -or ($holdstatus -eq  "y") -or ($holdstatus -eq "yes") -or ($holdstatus -eq "YES")){
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $True | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery | out-null
    }
    else{
    New-CaseHoldPolicy -Name "$holdName" -Case "$casename" -ExchangeLocation $finallist -SharePointLocation $urls -Enabled $false | out-null
    New-CaseHoldRule -Name "$holdName" -Policy "$holdname" -ContentMatchQuery $holdQuery -disabled $true | out-null
    }
    ""
    }
    else {"No valid locations were identified. Therefore, the hold wasn't created."}
    
    #write log files (if needed)
    $newhold=Get-CaseHoldPolicy -Identity "$holdname" -Case "$casename" -erroraction SilentlyContinue
    $newholdrule=Get-CaseHoldRule -Identity "$holdName" -erroraction SilentlyContinue
    if(($ODAdded.count -gt 0) -or ($ODExluded.count -gt 0) -or ($finallist.count -gt 0) -or ($excludedlist.count -gt 0) -or ($newhold.isvalid -eq 'True') -or ($newholdrule.isvalid -eq 'True'))
    {
    Write-Host "Generating output files..." -foregroundColor Yellow
    if($ODAdded.count -gt 0){
    "OneDrive Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.SharePointLocation.name | add-content .\LocationsOnHold.txt}
    if($ODExluded.count -gt 0){ 
    "Users without OneDrive locations" | add-content .\LocationsNotOnHold.txt
    "================================" | add-content .\LocationsNotOnHold.txt
    $ODExluded | add-content .\LocationsNotOnHold.txt}
    if($finallist.count -gt 0){
    " " | add-content .\LocationsOnHold.txt
    "Exchange Locations" | add-content .\LocationsOnHold.txt
    "==================" | add-content .\LocationsOnHold.txt 
    $newhold.ExchangeLocation.name | add-content .\LocationsOnHold.txt}
    if($excludedlist.count -gt 0){
    " "| add-content .\LocationsNotOnHold.txt
    "Mailboxes not added to the hold" | add-content .\LocationsNotOnHold.txt
    "===============================" | add-content .\LocationsNotOnHold.txt
    $excludedlist | add-content .\LocationsNotOnHold.txt}
    $FormatEnumerationLimit=-1
    if($newhold.isvalid -eq 'True'){$newhold|fl >.\GetCaseHoldPolicy.txt}
    if($newholdrule.isvalid -eq 'True'){$newholdrule|Fl >.\GetCaseHoldRule.txt}
    }
    }
    
    else {"The hold wasn't created because no valid entries were found in the text file."}
    ""
    Write-host "Script complete!" -foregroundColor Yellow
    ""
    #script end
  2. Aprire Windows PowerShell e passare alla cartella in cui è stato salvato lo script.

  3. Eseguire lo script, ad esempio:

    .\AddUsersToHold.ps1
  4. Immettere le informazioni chieste dallo script.

    Lo script si connette al Centro sicurezza e conformità tramite la sessione remota di PowerShell e quindi crea il nuovo blocco nel caso di eDiscovery, aggiungendo le cassette postali e i siti di OneDrive for Business per gli utenti inclusi nell'elenco. Per visualizzare il nuovo blocco, è possibile passare al caso nella pagina eDiscovery nel Centro sicurezza e conformità.

Al termine dell'esecuzione, lo script crea i file di log seguenti e li salva nella stessa cartella dello script.

  • LocationsOnHold.txt   Contiene un elenco di cassette postali e siti di OneDrive for Business bloccati correttamente dallo script.

  • LocationsNotOnHold.txt   Contiene un elenco di cassette postali e siti di OneDrive for Business che non sono stati bloccati dallo script. Se un utente ha una cassetta postale ma non un sito di OneDrive for Business, verrà incluso nell'elenco dei siti di OneDrive for Business a cui non è stato applicato il blocco.

  • GetCaseHoldPolicy.txt   Contiene l'output del cmdlet Get-CaseHoldPolicy per il nuovo blocco, eseguito dallo script dopo la creazione del nuovo blocco. Le informazioni restituite da questo cmdlet includono un elenco degli utenti le cui cassette postali e i cui siti di OneDrive for Business non sono stati bloccati, indicando anche se il blocco è abilitato o meno.

  • GetCaseHoldRule.txt   Contiene l'output del cmdlet Get-CaseHoldRule per il nuovo blocco, eseguito dallo script dopo la creazione del nuovo blocco. Le informazioni restituite da questo cmdlet includono la query di ricerca se lo script è stato usato per creare un blocco basato su query.

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 i tuoi commenti e suggerimenti

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

×