Utiliser un script pour ajouter des utilisateurs à une conservation dans un cas eDiscovery (Standard)

Security & Compliance PowerShell fournit des applets de commande qui vous permettent d’automatiser les tâches fastidieuses liées à la création et à la gestion des cas eDiscovery. Actuellement, l’utilisation du cas Microsoft Purview eDiscovery (Standard) dans le portail de conformité Microsoft Purview de mettre en attente un grand nombre d’emplacements de contenu de consignataires prend du temps et de la préparation. Par exemple, avant de créer une conservation, vous devez collecter l’URL de chaque OneDrive Entreprise site que vous souhaitez mettre en attente. Ensuite, pour chaque utilisateur que vous souhaitez mettre en attente, vous devez ajouter sa boîte aux lettres et son site OneDrive Entreprise à la conservation. Vous pouvez utiliser le script de cet article pour automatiser ce processus.

Le script vous invite à entrer le nom du domaine Mon site de votre organization (par exemple, contoso dans l’URL https://contoso-my.sharepoint.com), le nom d’un cas eDiscovery existant, le nom de la nouvelle conservation associée au cas, une liste d’adresses e-mail des utilisateurs que vous souhaitez mettre en attente et une requête de recherche à utiliser si vous souhaitez créer une conservation basée sur une requête. Le script obtient ensuite l’URL du site OneDrive Entreprise pour chaque utilisateur de la liste, crée la conservation, puis ajoute la boîte aux lettres et OneDrive Entreprise site pour chaque utilisateur de la liste à la conservation. Le script génère également des fichiers journaux qui contiennent des informations sur la nouvelle conservation.

Voici les étapes à suivre pour y parvenir :

Étape 1 : Installer SharePoint Online Management ShellÉtape 2 : Générer une liste d’utilisateursÉtape 3 : Exécuter le script pour créer une conservation et ajouter des utilisateurs

Conseil

Si vous n’êtes pas un client E5, utilisez la version d’évaluation de 90 jours des solutions Microsoft Purview pour découvrir comment des fonctionnalités Supplémentaires purview peuvent aider vos organization à gérer les besoins en matière de sécurité et de conformité des données. Commencez dès maintenant au hub d’essais portail de conformité Microsoft Purview. En savoir plus sur les conditions d’inscription et d’essai.

Avant d’ajouter des utilisateurs à une conservation

  • Vous devez être membre du groupe de rôles Gestionnaire eDiscovery dans le portail de conformité et administrateur SharePoint Online pour exécuter le script à l’étape 3. Pour plus d’informations, consultez Attribuer des autorisations eDiscovery dans Office 365 Security & Compliance Center.
  • Un maximum de 1 000 boîtes aux lettres et 100 sites peuvent être ajoutés à une conservation associée à un cas eDiscovery dans le portail de conformité. En supposant que chaque utilisateur que vous souhaitez mettre en attente dispose d’un OneDrive Entreprise site, vous pouvez ajouter un maximum de 100 utilisateurs à une conservation à l’aide du script de cet article.
  • Veillez à enregistrer la liste des utilisateurs que vous créez à l’étape 2 et le script de l’étape 3 dans le même dossier. Cela facilite l’exécution du script.
  • Le script ajoute la liste des utilisateurs à une nouvelle conservation associée à un cas existant. Assurez-vous que le cas auquel vous souhaitez associer la conservation est créé avant d’exécuter le script.
  • Le script de cet article prend en charge l’authentification moderne lors de la connexion à PowerShell security & Compliance et SharePoint Online Management Shell. Vous pouvez utiliser le script tel qu’il est si vous êtes un organization Microsoft 365 ou Microsoft 365 GCC. Si vous êtes Office 365 Allemagne organization, microsoft 365 GCC High organization ou microsoft 365 DoD organization, vous devez modifier le script pour l’exécuter correctement. Plus précisément, vous devez modifier la ligne Connect-IPPSSession et utiliser les paramètres ConnectionUri et AzureADAuthorizationEndpointUri (et les valeurs appropriées pour votre type de organization) pour vous connecter à PowerShell security & Compliance. Pour plus d’informations, consultez les exemples dans Se connecter à la sécurité & Conformité PowerShell.
  • Le script se déconnecte automatiquement de PowerShell security & Compliance et sharePoint Online Management Shell.
  • Le script inclut une gestion minimale des erreurs. Son objectif principal est de placer rapidement et facilement la boîte aux lettres et OneDrive Entreprise site de chaque utilisateur en attente.
  • Les exemples de scripts fournis dans cette rubrique ne sont pris en charge par aucun programme ou service de support standard Microsoft. Les exemples de scripts sont fournis tels quels, sans garantie d’aucune sorte. Microsoft Corporation décline aussi toute garantie implicite, y compris et sans limitation, les garanties implicites de qualité marchande ou d’adéquation à un usage particulier. La totalité des risques découlant de l’utilisation ou de la performance des exemples de scripts et de la documentation repose sur vous. En aucun cas Microsoft, ses auteurs ou quiconque impliqué dans la création, la production ou la livraison des scripts ne sera responsable de tous dommages quels qu’ils soient (y compris, sans limitation, les dommages pour perte de profits, interruption d’activité, perte d’informations commerciales ou toute autre perte pécuniaire) découlant de l’utilisation ou de l’impossibilité d’utiliser les exemples de scripts ou la documentation, même si Microsoft a été informé de la possibilité de tels dommages.

Étape 1 : installer SharePoint Online Management Shell

La première étape consiste à installer SharePoint Online Management Shell s’il n’est pas déjà installé sur votre ordinateur local. Vous n’avez pas besoin d’utiliser l’interpréteur de commandes dans cette procédure, mais vous devez l’installer, car il contient les prérequis requis par le script que vous exécutez à l’étape 3. Ces prérequis permettent au script de communiquer avec SharePoint Online pour obtenir les URL des sites OneDrive Entreprise.

Accédez à Configurer l’environnement SharePoint Online Management Shell et effectuez les étapes 1 et 2 pour installer SharePoint Online Management Shell sur votre ordinateur local.

Étape 2 : Générer une liste d’utilisateurs

Le script de l’étape 3 crée une conservation associée à un cas eDiscovery, et ajoute les boîtes aux lettres et OneDrive Entreprise sites d’une liste d’utilisateurs à la conservation. Vous pouvez simplement taper les adresses e-mail dans un fichier texte, ou exécuter une commande dans PowerShell pour obtenir une liste d’adresses e-mail et les enregistrer dans un fichier (situé dans le même dossier que celui dans lequel vous allez enregistrer le script à l’étape 3).

Voici une commande PowerShell Exchange Online pour obtenir la liste des adresses e-mail de tous les utilisateurs de votre organization et l’enregistrer dans un fichier texte nommé HoldUsers.txt.

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

Après avoir exécuté cette commande, ouvrez le fichier texte et supprimez l’en-tête qui contient le nom de la propriété, PrimarySmtpAddress. Supprimez ensuite toutes les adresses e-mail à l’exception de celles des utilisateurs que vous souhaitez ajouter à la conservation que vous allez créer à l’étape 3. Assurez-vous qu’il n’y a pas de lignes vides avant ou après la liste des adresses e-mail.

Étape 3 : Exécuter le script pour créer une conservation et ajouter des utilisateurs

Lorsque vous exécutez le script dans cette étape, il vous invite à fournir les informations suivantes. Veillez à disposer de ces informations avant d’exécuter le script.

  • Vos informations d’identification utilisateur : Le script utilise vos informations d’identification pour se connecter à PowerShell sécurité & conformité. Il utilisera également ces informations d’identification pour accéder à SharePoint Online afin d’obtenir les URL OneDrive Entreprise de la liste des utilisateurs.

  • Nom de votre domaine SharePoint : Le script vous invite à entrer ce nom afin qu’il puisse se connecter au Centre d’administration SharePoint. Il utilise également le nom de domaine pour les URL OneDrive dans votre organization. Par exemple, si l’URL de votre centre d’administration est https://contoso-admin.sharepoint.com et que l’URL de OneDrive est https://contoso-my.sharepoint.com, vous devez entrer contoso lorsque le script vous invite à entrer votre nom de domaine.

  • Nom du cas : Nom d’un cas existant. Le script crée une conservation associée à ce cas.

  • Nom de la conservation : Nom de la conservation que le script créera et associera au cas spécifié.

  • Requête de recherche pour une conservation basée sur une requête : Vous pouvez créer une conservation basée sur les requêtes afin que seul le contenu qui répond aux critères de recherche spécifiés soit mis en attente. Pour mettre tout le contenu en attente, appuyez simplement sur Entrée lorsque vous êtes invité à entrer une requête de recherche.

  • Activation de la conservation ou non : Vous pouvez demander au script d’activer la mise en attente après sa création ou vous pouvez demander au script de créer la conservation sans l’activer. Si le script n’est pas activé, vous pouvez l’activer ultérieurement dans le portail de conformité ou en exécutant les commandes PowerShell suivantes :

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
    
  • Nom du fichier texte avec la liste des utilisateurs : nom du fichier texte de l’étape 2 qui contient la liste des utilisateurs à ajouter à la conservation. Si ce fichier se trouve dans le même dossier que le script, tapez simplement le nom du fichier (par exemple, HoldUsers.txt). Si le fichier texte se trouve dans un autre dossier, tapez le chemin d’accès complet du fichier.

Une fois que vous avez collecté les informations que le script vous invite à entrer, la dernière étape consiste à exécuter le script pour créer la nouvelle conservation et y ajouter des utilisateurs.

  1. Enregistrez le texte suivant dans un fichier de script Windows PowerShell en utilisant le suffixe de nom de fichier ..ps1 Par exemple : 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. Sur votre ordinateur local, ouvrez Windows PowerShell et accédez au dossier dans lequel vous avez enregistré le script.

  3. Exécutez le script ; par exemple :

    .\AddUsersToHold.ps1
    
  4. Entrez les informations que le script vous demande.

    Le script se connecte à Security & Compliance PowerShell, puis crée la conservation dans le cas eDiscovery et ajoute les boîtes aux lettres et les OneDrive Entreprise pour les utilisateurs de la liste. Vous pouvez accéder au cas dans la page eDiscovery du portail de conformité pour afficher la nouvelle conservation.

Une fois l’exécution du script terminée, il crée les fichiers journaux suivants et les enregistre dans le dossier où se trouve le script.

  • LocationsOnHold.txt : Contient une liste de boîtes aux lettres et de sites OneDrive Entreprise que le script a correctement mis en attente.
  • LocationsNotOnHold.txt : Contient une liste de boîtes aux lettres et de sites OneDrive Entreprise que le script n’a pas mis en attente. Si un utilisateur dispose d’une boîte aux lettres, mais pas d’un site OneDrive Entreprise, l’utilisateur est inclus dans la liste des sites OneDrive Entreprise qui n’ont pas été mis en attente.
  • GetCaseHoldPolicy.txt : Contient la sortie de l’applet de commande Get-CaseHoldPolicy pour la nouvelle conservation, que le script a exécutée après la création de la nouvelle conservation. Les informations retournées par cette applet de commande incluent la liste des utilisateurs dont les boîtes aux lettres et les sites OneDrive Entreprise ont été mis en attente et indiquent si la conservation est activée ou désactivée.
  • GetCaseHoldRule.txt : Contient la sortie de l’applet de commande Get-CaseHoldRule pour la nouvelle conservation, que le script a exécutée après la création de la conservation. Les informations retournées par cette applet de commande incluent la requête de recherche si vous avez utilisé le script pour créer une conservation basée sur une requête.