Usare uno script per aggiungere utenti a un blocco in un caso di eDiscovery (Standard)

Security & Compliance PowerShell offre cmdlet che consentono di automatizzare le attività che richiedono molto tempo relative alla creazione e alla gestione dei casi di eDiscovery. Attualmente, l'uso del caso Microsoft Purview eDiscovery (Standard) nel Portale di conformità di Microsoft Purview per mettere in attesa un numero elevato di posizioni di contenuto responsabile richiede tempo e preparazione. Ad esempio, prima di creare un blocco, è necessario raccogliere l'URL per ogni sito OneDrive for Business che si vuole mettere in attesa. Quindi, per ogni utente che si vuole mettere in attesa, è necessario aggiungere la cassetta postale e il sito OneDrive for Business al blocco. È possibile usare lo script in questo articolo per automatizzare questo processo.

Lo script richiede il nome del dominio 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 mettere in attesa e una query di ricerca da usare se si vuole creare un blocco basato su query. Lo script ottiene quindi l'URL del sito OneDrive for Business per ogni utente nell'elenco, crea il nuovo blocco e quindi aggiunge la cassetta postale e OneDrive for Business sito per ogni utente nell'elenco al blocco. Lo script genera anche file di log che contengono informazioni sul nuovo blocco.

Ecco i passaggi per eseguire questa operazione:

Passaggio 1: Installare SharePoint Online Management ShellPassaggio 2: Generare un elenco di utentiPassaggio 3: Eseguire lo script per creare un blocco e aggiungere utenti

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.

Prima di aggiungere utenti a un blocco

  • È necessario essere un membro del gruppo di ruoli di eDiscovery Manager nel portale di conformità e un amministratore di SharePoint Online per eseguire lo script nel passaggio 3. Per altre informazioni, vedere Assegnare autorizzazioni di eDiscovery nel Centro conformità Office 365 Security &.
  • È possibile aggiungere un massimo di 1.000 cassette postali e 100 siti a un blocco associato a un caso di eDiscovery nel portale di conformità. Supponendo che ogni utente da mettere in attesa abbia un sito OneDrive for Business, è possibile aggiungere un massimo di 100 utenti a un blocco usando lo script in questo articolo.
  • Assicurarsi di salvare l'elenco di utenti creati nel passaggio 2 e lo script nel passaggio 3 nella stessa cartella. In questo modo sarà più semplice eseguire lo script.
  • Lo script aggiunge l'elenco di utenti a un nuovo blocco associato a un caso esistente. Assicurarsi che il caso a cui si vuole associare il blocco venga creato prima di eseguire lo script.
  • Lo script in questo articolo supporta l'autenticazione moderna quando ci si connette a PowerShell per la sicurezza & conformità e SharePoint Online Management Shell. È possibile usare lo script così come è se si è un'organizzazione Microsoft 365 o Microsoft 365 GCC. Se si è un'organizzazione Office 365 Germania, un'organizzazione Microsoft 365 GCC High o un'organizzazione Microsoft 365 DoD, sarà necessario modificare lo script per eseguirlo correttamente. In particolare, è necessario modificare la riga Connect-IPPSSession e usare i parametri ConnectionUri e AzureADAuthorizationEndpointUri (e i valori appropriati per il tipo di organizzazione) per connettersi a PowerShell sicurezza & conformità. Per altre informazioni, vedere gli esempi in Connect to Security & Compliance PowerShell.For more information, see the examples in Connect to Security & Compliance PowerShell.For more information, see the examples in Connect to Security & Compliance PowerShell.
  • Lo script si disconnette automaticamente da Security & Compliance PowerShell e SharePoint Online Management Shell.
  • Lo script include la gestione minima degli errori. Il suo scopo principale è quello di posizionare rapidamente e facilmente la cassetta postale e OneDrive for Business sito di ogni utente in attesa.
  • 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: Installare SharePoint Online Management Shell

Il primo passaggio consiste nell'installare SharePoint Online Management Shell se non è già installato nel computer locale. Non è necessario usare la shell in questa procedura, ma è necessario installarla perché contiene i prerequisiti richiesti dallo script eseguito nel passaggio 3. Questi prerequisiti consentono allo script di comunicare con SharePoint Online per ottenere gli URL per i siti OneDrive for Business.

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

Passaggio 2: Generare un elenco di utenti

Lo script nel passaggio 3 creerà un blocco associato a un caso di eDiscovery e aggiungerà le cassette postali e OneDrive for Business siti di un elenco di utenti al blocco. È sufficiente digitare gli indirizzi di posta elettronica in un file di testo oppure eseguire un comando in PowerShell per ottenere un elenco di indirizzi di posta elettronica e salvarli in un file (che si trova nella stessa cartella in cui si salverà lo script nel passaggio 3).

Ecco un Exchange Online comando di PowerShell 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 della proprietà, PrimarySmtpAddress. Rimuovere quindi tutti gli indirizzi di posta elettronica ad eccezione di quelli per gli utenti che si desidera aggiungere al blocco che verrà creato nel passaggio 3. Assicurarsi che non siano presenti righe vuote prima o dopo l'elenco degli indirizzi di posta elettronica.

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 queste informazioni pronte prima di eseguire lo script.

  • Credenziali utente: Lo script userà le credenziali per connettersi a PowerShell sicurezza & conformità. Userà anche queste credenziali per accedere a SharePoint Online per ottenere gli URL di OneDrive for Business per l'elenco di utenti.

  • Nome del dominio di SharePoint: Lo script richiede di immettere questo nome in modo che possa connettersi all'interfaccia di amministrazione di SharePoint. Usa anche il nome di dominio per gli URL di OneDrive nell'organizzazione. Ad esempio, se l'URL dell'interfaccia di amministrazione è https://contoso-admin.sharepoint.com e l'URL di OneDrive è https://contoso-my.sharepoint.com, immettere contoso quando lo script richiede il nome di dominio.

  • Nome del caso: Nome di un caso esistente. Lo script creerà un nuovo blocco associato a questo caso.

  • Nome del blocco: Il nome del blocco che verrà creato dallo script e associato al caso specificato.

  • Query di ricerca per un blocco basato su query: È possibile creare un blocco basato su query in modo che venga bloccato solo il contenuto che soddisfa i criteri di ricerca specificati. Per mettere tutto il contenuto in attesa, è sufficiente premere INVIO quando viene richiesta una query di ricerca.

  • Attivazione o meno del blocco: È possibile fare in modo che lo script accerti il blocco dopo che è stato creato o che lo script crei il blocco senza abilitarlo. Se lo script non attiva il blocco, è possibile attivarlo più avanti nel portale di 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, digitare il nome percorso completo del file.

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

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

    #script begin
    " "
    write-host "***********************************************"
    write-host "   Security & Compliance PowerShell  " -foregroundColor yellow -backgroundcolor darkgreen
    write-host "   eDiscovery (Standard) cases - Add users to a hold   " -foregroundColor yellow -backgroundcolor darkgreen
    write-host "***********************************************"
    " "
    # Connect to Security & Compliance PowerShell using modern authentication
    if (!$SccSession)
    {
      Import-Module ExchangeOnlineManagement
      Connect-IPPSSession
    }
    
    # Get the organization's domain name. We use this to create the SharePoint admin URL and root URL for OneDrive for Business.
    ""
    $mySiteDomain = Read-Host "Enter the domain name for your SharePoint organization. We use this name to connect to SharePoint admin center and for the OneDrive URLs in your organization. For example, 'contoso' in 'https://contoso-admin.sharepoint.com' and 'https://contoso-my.sharepoint.com'"
    ""
    
    # Connect to PnP Online using modern authentication
    Import-Module PnP.PowerShell
    Connect-PnPOnline -Url https://$mySiteDomain-admin.sharepoint.com -UseWebLogin
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to https://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: https://go.microsoft.com/fwlink/p/?LinkId=255251 and then re-run this script."
            return;
        }
    }
    
    # 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 account 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"
    $urls = @()
    foreach($emailAddress in $finallist)
    {
    try
    {
    $url=Get-PnPUserProfileProperty -Account $emailAddress | Select PersonalUrl
    $urls += $url.PersonalUrl
           Write-Host "- $emailAddress => $url"
           [array]$ODadded += $url.PersonalUrl
           }catch {
     Write-Warning "Could not locate OneDrive for $emailAddress"
     [array]$ODExluded += $emailAddress
     Continue }
    }
    $urls | FL
    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 $false | 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."}
    ""
    #Disconnect from SCC PowerShell and PnPOnline
    
    Write-host "Disconnecting from SCC PowerShell and PnP Online" -foregroundColor Yellow
    Get-PSSession | Remove-PSSession
    Disconnect-PnPOnline
    
    Write-host "Script complete!" -foregroundColor Yellow
    ""
    #script end
    
  2. Nel computer locale aprire Windows PowerShell e passare alla cartella in cui è stato salvato lo script.

  3. Eseguire lo script; Per esempio:

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

    Lo script si connette a Security & Compliance PowerShell, quindi crea il nuovo blocco nel caso di eDiscovery e aggiunge le cassette postali e OneDrive for Business per gli utenti nell'elenco. È possibile passare al caso nella pagina eDiscovery nel portale di conformità per visualizzare il nuovo blocco.

Al termine dell'esecuzione dello script, vengono creati i file di log seguenti e salvati nella cartella in cui si trova lo script.

  • LocationsOnHold.txt: Contiene un elenco di cassette postali e siti OneDrive for Business che lo script ha inserito correttamente in attesa.
  • LocationsNotOnHold.txt: Contiene un elenco di cassette postali e siti OneDrive for Business che lo script non ha inserito in attesa. Se un utente dispone di una cassetta postale, ma non di un sito OneDrive for Business, l'utente verrà incluso nell'elenco dei siti OneDrive for Business non bloccati.
  • 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 di utenti le cui cassette postali e OneDrive for Business siti sono stati bloccati e se il blocco è abilitato o disabilitato.
  • 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 è stato usato lo script per creare un blocco basato su query.