Partilhar via


Utilizar um script para adicionar utilizadores a uma suspensão num caso de Deteção de Dados Eletrónicos (Standard)

Dica

A Deteção de Dados Eletrónicos (pré-visualização) está agora disponível no novo portal do Microsoft Purview. Para saber mais sobre como utilizar a nova experiência de Deteção de Dados Eletrónicos, veja Saiba mais sobre a Deteção de Dados Eletrónicos (pré-visualização).

O PowerShell de Conformidade & de Segurança fornece cmdlets que lhe permitem automatizar tarefas demoradas relacionadas com a criação e gestão de casos de Deteção de Dados Eletrónicos. Atualmente, a utilização do caso de Deteção de Dados Eletrónicos (Standard) do Microsoft Purview no portal de conformidade do Microsoft Purview para colocar um grande número de localizações de conteúdo depositário em espera demora tempo e preparação. Por exemplo, antes de criar uma suspensão, tem de recolher o URL de cada site do OneDrive para Empresas que pretende colocar em espera. Em seguida, para cada utilizador que pretende colocar em espera, tem de adicionar a respetiva caixa de correio e o respetivo site do OneDrive para Empresas à retenção. Pode utilizar o script neste artigo para automatizar este processo.

O script pede-lhe o nome do domínio O Meu Site da sua organização (por exemplo, contoso no URL https://contoso-my.sharepoint.com), o nome de um caso de Deteção de Dados Eletrónicos existente, o nome da nova suspensão associada ao caso, uma lista de endereços de e-mail dos utilizadores que pretende colocar em espera e uma consulta de pesquisa a utilizar se quiser criar uma suspensão baseada em consultas. Em seguida, o script obtém o URL do site do OneDrive para Empresas para cada utilizador na lista, cria a nova suspensão e, em seguida, adiciona a caixa de correio e o site do OneDrive para Empresas para cada utilizador na lista à retenção. O script também gera ficheiros de registo que contêm informações sobre a nova suspensão.

Eis os passos para que isto aconteça:

Passo 1: Instalar a Shell de Gestão do SharePoint OnlinePasso 2: Gerar uma lista de utilizadoresPasso 3: Executar o script para criar uma suspensão e adicionar utilizadores

Dica

Se você não é um cliente E5, use a avaliação das soluções do Microsoft Purview de 90 dias para explorar como os 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 testes do portal de conformidade do Microsoft Purview. Saiba mais detalhes sobre os termos de inscrição e avaliação.

Antes de adicionar utilizadores a uma suspensão

  • Tem de ser membro do grupo de funções Gestor de Deteção de Dados Eletrónicos no portal de conformidade e administrador do SharePoint Online para executar o script no Passo 3. Para obter mais informações, consulte Atribuir permissões de Deteção de Dados Eletrónicos no Centro de Conformidade & de Segurança do Office 365.
  • Um máximo de 1000 caixas de correio e 100 sites podem ser adicionados a uma suspensão associada a um caso de Deteção de Dados Eletrónicos no portal de conformidade. Partindo do princípio de que todos os utilizadores que pretende colocar em espera têm um site do OneDrive para Empresas, pode adicionar um máximo de 100 utilizadores a uma suspensão utilizando o script neste artigo.
  • Certifique-se de que guarda a lista de utilizadores que cria no Passo 2 e o script no Passo 3 na mesma pasta. Desta forma, será mais fácil executar o script.
  • O script adiciona a lista de utilizadores a uma nova suspensão que está associada a um caso existente. Certifique-se de que o caso ao qual pretende associar a suspensão é criado antes de executar o script.
  • O script neste artigo suporta a autenticação moderna ao ligar ao PowerShell de Conformidade do & de Segurança e à Shell de Gestão do SharePoint Online. Pode utilizar o script tal como está se for um Microsoft 365 ou uma organização do Microsoft 365 GCC. Se for uma organização do Office 365 Germany, uma organização do Microsoft 365 GCC High ou uma organização do Microsoft 365 DoD, terá de editar o script para o executar com êxito. Especificamente, tem de editar a linha Connect-IPPSSession e utilizar os parâmetros ConnectionUri e AzureADAuthorizationEndpointUri (e os valores adequados para o tipo de organização) para ligar ao PowerShell de Conformidade do & de Segurança. Para obter mais informações, veja os exemplos em Ligar ao PowerShell de Conformidade do & de Segurança.
  • O script desliga-se automaticamente do PowerShell de Conformidade do & de Segurança e da Shell de Gestão do SharePoint Online.
  • O script inclui um processamento de erros mínimo. O seu principal objetivo é colocar de forma rápida e fácil a caixa de correio e o site do OneDrive para Empresas de cada utilizador em espera.
  • Os scripts de exemplo fornecidos neste tópico não são suportados 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: Instalar o Shell de gerenciamento do SharePoint Online

O primeiro passo é instalar a Shell de Gestão do SharePoint Online se ainda não estiver instalada no seu computador local. Não tem de utilizar a shell neste procedimento, mas tem de instalá-la porque contém os pré-requisitos necessários para o script que executa no Passo 3. Estes pré-requisitos permitem que o script comunique com o SharePoint Online para obter os URLs dos sites do OneDrive para Empresas.

Aceda a Configurar o ambiente da Shell de Gestão do SharePoint Online e execute os Passos 1 e 2 para instalar a Shell de Gestão do SharePoint Online no seu computador local.

Passo 2: Gerar uma lista de utilizadores

O script no Passo 3 criará uma suspensão associada a um caso de Deteção de Dados Eletrónicos e adicionará as caixas de correio e os sites do OneDrive para Empresas de uma lista de utilizadores à suspensão. Pode simplesmente escrever os endereços de e-mail num ficheiro de texto ou executar um comando no PowerShell para obter uma lista de endereços de e-mail e guardá-los num ficheiro (localizado na mesma pasta na qual irá guardar o script no Passo 3).

Eis um comando do PowerShell do Exchange Online para obter uma lista de endereços de e-mail para todos os utilizadores na sua organização e guardá-lo num ficheiro de texto com o nome HoldUsers.txt.

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

Depois de executar este comando, abra o ficheiro de texto e remova o cabeçalho que contém o nome da propriedade, PrimarySmtpAddress. Em seguida, remova todos os endereços de e-mail exceto os dos utilizadores que pretende adicionar à suspensão que irá criar no Passo 3. Certifique-se de que não existem linhas em branco antes ou depois da lista de endereços de e-mail.

Passo 3: executar o script para criar uma suspensão e adicionar utilizadores

Quando executar o script neste passo, ser-lhe-á pedida a seguinte informação. Certifique-se de que tem estas informações prontas antes de executar o script.

  • As suas credenciais de utilizador: O script utilizará as suas credenciais para ligar ao PowerShell de Conformidade do & de Segurança. Também utilizará estas credenciais para aceder ao SharePoint Online para obter os URLs do OneDrive para Empresas para a lista de utilizadores.

  • Nome do seu domínio do SharePoint: O script pede-lhe para introduzir este nome para que possa ligar ao centro de administração do SharePoint. Também utiliza o nome de domínio para os URLs do OneDrive na sua organização. Por exemplo, se o URL do seu centro de administração for https://contoso-admin.sharepoint.com e o URL do OneDrive for https://contoso-my.sharepoint.com, deverá introduzir contoso quando o script lhe pedir o nome de domínio.

  • Nome do caso: O nome de um caso existente. O script irá criar uma nova suspensão que está associada a este caso.

  • Nome da suspensão: O nome da suspensão que o script irá criar e associar ao caso especificado.

  • Pesquise uma suspensão baseada em consultas: Pode criar uma suspensão baseada em consultas para que apenas o conteúdo que cumpra os critérios de pesquisa especificados seja colocado em suspensão. Para colocar todo o conteúdo em espera, basta premir Enter quando lhe for pedida uma consulta de pesquisa.

  • Ativar ou não a suspensão: Pode fazer com que o script ative a suspensão depois de ser criado ou pode fazer com que o script crie a suspensão sem a ativar. Se não tiver o script ativado, pode ativá-lo mais tarde no portal de conformidade ou ao executar os seguintes comandos do PowerShell:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
    
  • Nome do ficheiro de texto com a lista de utilizadores – o nome do ficheiro de texto do Passo 2 que contém a lista de utilizadores a adicionar à suspensão. Se este ficheiro estiver localizado na mesma pasta que o script, basta escrever o nome do ficheiro (por exemplo, HoldUsers.txt). Se o ficheiro de texto estiver noutra pasta, escreva o nome do caminho completo do ficheiro.

Depois de recolher as informações que o script lhe pedirá, o passo final é executar o script para criar a nova suspensão e adicionar utilizadores à mesma.

  1. Guarde o seguinte texto num ficheiro de script do Windows PowerShell com um sufixo de nome de ficheiro de .ps1. Por exemplo, 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. No seu computador local, abra o Windows PowerShell e aceda à pasta onde guardou o script.

  3. Executar o script; Por exemplo:

    .\AddUsersToHold.ps1
    
  4. Introduza as informações que o script lhe pede.

    O script liga-se ao PowerShell de Conformidade do & de Segurança e, em seguida, cria a nova suspensão no caso de Deteção de Dados Eletrónicos e adiciona as caixas de correio e o OneDrive para Empresas para os utilizadores na lista. Pode aceder ao caso na página Deteção de Dados Eletrónicos no portal de conformidade para ver a nova suspensão.

Após a execução do script, este cria os seguintes ficheiros de registo e guarda-os na pasta onde o script está localizado.

  • LocationsOnHold.txt: Contém uma lista de caixas de correio e sites do OneDrive para Empresas que o script colocou em espera com êxito.
  • LocationsNotOnHold.txt: Contém uma lista de caixas de correio e sites do OneDrive para Empresas que o script não colocou em espera. Se um utilizador tiver uma caixa de correio, mas não um site do OneDrive para Empresas, o utilizador será incluído na lista de sites do OneDrive para Empresas que não foram colocados em espera.
  • GetCaseHoldPolicy.txt: Contém a saída do cmdlet Get-CaseHoldPolicy para a nova suspensão, que o script executou depois de criar a nova suspensão. As informações devolvidas por este cmdlet incluem uma lista de utilizadores cujas caixas de correio e sites do OneDrive para Empresas foram colocados em espera e se a suspensão está ativada ou desativada.
  • GetCaseHoldRule.txt: Contém a saída do cmdlet Get-CaseHoldRule para a nova suspensão, que o script executou depois de criar a nova suspensão. As informações devolvidas por este cmdlet incluem a consulta de pesquisa se tiver utilizado o script para criar uma suspensão baseada em consultas.