Verwenden eines Skripts zum Hinzufügen von Benutzern zu einem Haltebereich in einem eDiscovery (Standard)-Fall

Security & Compliance PowerShell bietet Cmdlets, mit denen Sie zeitaufwändige Aufgaben im Zusammenhang mit dem Erstellen und Verwalten von eDiscovery-Fällen automatisieren können. Derzeit erfordert die Verwendung des Microsoft Purview-eDiscovery (Standard)-Falls im Microsoft Purview-Complianceportal, um eine große Anzahl von Verwahrungsinhaltsspeicherorten in den Halteraum zu setzen, Zeit und Vorbereitung. Bevor Sie z. B. einen Halteraum erstellen, müssen Sie die URL für jede OneDrive for Business Website erfassen, die Sie im Haltefeld platzieren möchten. Anschließend müssen Sie für jeden Benutzer, den Sie in den Halteraum legen möchten, sein Postfach und seine OneDrive for Business Website hinzufügen. Sie können das Skript in diesem Artikel verwenden, um diesen Prozess zu automatisieren.

Das Skript fordert Sie zur Eingabe des Namens der Domäne "Meine Website" Ihres organization auf (zcontoso. B. in der URLhttps://contoso-my.sharepoint.com), den Namen eines vorhandenen eDiscovery-Falls, den Namen des neuen Haltebereichs, der dem Fall zugeordnet ist, eine Liste der E-Mail-Adressen der Benutzer, die Sie in den Haltebereich setzen möchten, und eine Suchabfrage, die verwendet werden soll, wenn Sie einen abfragebasierten Haltebereich erstellen möchten. Das Skript ruft dann die URL für die OneDrive for Business Website für jeden Benutzer in der Liste ab, erstellt den neuen Haltebereich und fügt dann das Postfach und OneDrive for Business Website für jeden Benutzer in der Liste dem Haltebereich hinzu. Das Skript generiert auch Protokolldateien, die Informationen zum neuen Haltebereich enthalten.

Hier sind die Schritte, um dies zu ermöglichen:

Schritt 1: Installieren der SharePoint Online-VerwaltungsshellSchritt 2: Generieren einer BenutzerlisteSchritt 3: Ausführen des Skripts zum Erstellen eines Haltebereichs und Hinzufügen von Benutzern

Tipp

Wenn Sie kein E5-Kunde sind, verwenden Sie die 90-tägige Testversion von Microsoft Purview-Lösungen, um zu erfahren, wie zusätzliche Purview-Funktionen Ihre organization die Verwaltung von Datensicherheits- und Complianceanforderungen unterstützen können. Beginnen Sie jetzt im Microsoft Purview-Complianceportal Testversionshub. Erfahren Sie mehr über die Anmelde- und Testbedingungen.

Vor dem Hinzufügen von Benutzern zu einem Halteraum

  • Sie müssen Mitglied der Rollengruppe eDiscovery-Manager im Complianceportal und SharePoint Online-Administrator sein, um das Skript in Schritt 3 ausführen zu können. Weitere Informationen finden Sie unter Zuweisen von eDiscovery-Berechtigungen im Office 365 Security & Compliance Center.
  • Einem Halteraum, der einem eDiscovery-Fall im Complianceportal zugeordnet ist, können maximal 1.000 Postfächer und 100 Websites hinzugefügt werden. Unter der Annahme, dass jeder Benutzer, den Sie in den Haltebereich platzieren möchten, über eine OneDrive for Business Website verfügt, können Sie mithilfe des Skripts in diesem Artikel maximal 100 Benutzer zu einem Haltebereich hinzufügen.
  • Achten Sie darauf, die Liste der Benutzer, die Sie in Schritt 2 erstellt haben, und das Skript in Schritt 3 im selben Ordner zu speichern. Dies erleichtert die Ausführung des Skripts.
  • Das Skript fügt die Liste der Benutzer einem neuen Haltebereich hinzu, der einem vorhandenen Fall zugeordnet ist. Stellen Sie sicher, dass der Fall, dem Sie den Haltebereich zuordnen möchten, erstellt wird, bevor Sie das Skript ausführen.
  • Das Skript in diesem Artikel unterstützt die moderne Authentifizierung beim Herstellen einer Verbindung mit Security & Compliance PowerShell und SharePoint Online-Verwaltungsshell. Sie können das Skript unverändert verwenden, wenn Sie ein Microsoft 365- oder Ein Microsoft 365 GCC-organization sind. Wenn Sie ein Office 365 Deutschland organization, ein Microsoft 365 GCC High organization oder ein Microsoft 365 DoD organization sind, müssen Sie das Skript bearbeiten, um es erfolgreich auszuführen. Insbesondere müssen Sie die Zeile Connect-IPPSSession bearbeiten und die Parameter ConnectionUri und AzureADAuthorizationEndpointUri (und die entsprechenden Werte für Ihren organization Typ) verwenden, um eine Verbindung mit Security & Compliance PowerShell herzustellen. Weitere Informationen finden Sie in den Beispielen unter Herstellen einer Verbindung mit Security & Compliance PowerShell.
  • Das Skript trennt automatisch die Verbindung mit Security & Compliance PowerShell und SharePoint Online-Verwaltungsshell.
  • Das Skript umfasst eine minimale Fehlerbehandlung. Der Hauptzweck besteht darin, das Postfach und die OneDrive for Business Website jedes Benutzers schnell und einfach im Haltebereich zu platzieren.
  • Die in diesem Thema bereitgestellten Beispielskripts werden von keinem Microsoft-Standardsupportprogramm oder -Dienst unterstützt. Die Beispielskripts werden wie besehen ohne jegliche Garantie zur Verfügung gestellt. Microsoft schließt ferner alle konkludenten Gewährleistungen, einschließlich, aber nicht beschränkt auf konkludente Gewährleistungen der Handelsüblichkeit oder Eignung für einen bestimmten Zweck aus. Das gesamte Risiko, das mit der Verwendung oder Leistung der Beispielskripts und der Dokumentation einhergeht, liegt bei Ihnen. In keinem Fall sind Microsoft, seine Autoren oder an der Erstellung, Produktion oder Übermittlung der Skripts beteiligte Personen für Schäden jeglicher Art (einschließlich und ohne Einschränkung Schäden durch Verlust entgangener Gewinne, Geschäftsunterbrechungen, Verlust von Geschäftsinformationen oder andere geldliche Verluste) haftbar, die aus der Nutzung bzw. Unfähigkeit zur Nutzung der Beispielskripts oder Dokumentation entstehen, auch wenn Microsoft auf die Möglichkeit solcher Schäden hingewiesen wurde.

Schritt 1: Installieren der SharePoint Online-Verwaltungsshell

Der erste Schritt besteht darin, die SharePoint Online-Verwaltungsshell zu installieren, wenn sie noch nicht auf Ihrem lokalen Computer installiert ist. Sie müssen die Shell in diesem Verfahren nicht verwenden, aber Sie müssen sie installieren, da sie die Voraussetzungen enthält, die für das Skript erforderlich sind, das Sie in Schritt 3 ausführen. Diese Voraussetzungen ermöglichen es dem Skript, mit SharePoint Online zu kommunizieren, um die URLs für die OneDrive for Business Websites abzurufen.

Wechseln Sie zu Einrichten der SharePoint Online-Verwaltungsshell-Umgebung , und führen Sie Schritt 1 und Schritt 2 aus, um die SharePoint Online-Verwaltungsshell auf Ihrem lokalen Computer zu installieren.

Schritt 2: Generieren einer Benutzerliste

Das Skript in Schritt 3 erstellt einen Haltebereich, der einem eDiscovery-Fall zugeordnet ist, und fügt die Postfächer und OneDrive for Business Websites einer Liste von Benutzern dem Haltebereich hinzu. Sie können die E-Mail-Adressen einfach in eine Textdatei eingeben, oder Sie können einen Befehl in PowerShell ausführen, um eine Liste von E-Mail-Adressen abzurufen und in einer Datei zu speichern (in dem Sie das Skript in Schritt 3 speichern).

Hier sehen Sie einen Exchange Online PowerShell-Befehl, um eine Liste mit E-Mail-Adressen für alle Benutzer in Ihrem organization abzurufen und in einer Textdatei namens HoldUsers.txt zu speichern.

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

Nachdem Sie diesen Befehl ausgeführt haben, öffnen Sie die Textdatei, und entfernen Sie den Header, der den Eigenschaftsnamen enthält. PrimarySmtpAddress Entfernen Sie dann alle E-Mail-Adressen mit Ausnahme der E-Mail-Adressen für die Benutzer, die Sie dem Haltebereich hinzufügen möchten, den Sie in Schritt 3 erstellen. Stellen Sie sicher, dass vor oder nach der Liste der E-Mail-Adressen keine leeren Zeilen vorhanden sind.

Schritt 3: Ausführen des Skripts zum Erstellen eines Haltebereichs und Hinzufügen von Benutzern

Wenn Sie das Skript in diesem Schritt ausführen, werden Sie zur Eingabe der folgenden Informationen aufgefordert. Stellen Sie sicher, dass Diese Informationen bereit sind, bevor Sie das Skript ausführen.

  • Ihre Benutzeranmeldeinformationen: Das Skript verwendet Ihre Anmeldeinformationen, um eine Verbindung mit Security & Compliance PowerShell herzustellen. Außerdem werden diese Anmeldeinformationen für den Zugriff auf SharePoint Online verwendet, um die OneDrive for Business URLs für die Liste der Benutzer abzurufen.

  • Name Ihrer SharePoint-Domäne: Das Skript fordert Sie auf, diesen Namen einzugeben, damit es eine Verbindung mit dem SharePoint Admin Center herstellen kann. Außerdem wird der Domänenname für die OneDrive-URLs in Ihrem organization verwendet. Wenn die URL für Ihr Admin Center beispielsweise lautet https://contoso-admin.sharepoint.com und die URL für OneDrive lautet https://contoso-my.sharepoint.com, würden Sie eingeben contoso , wenn das Skript Sie zur Eingabe Ihres Domänennamens auffordert.

  • Name des Falls: Der Name einer vorhandenen Groß-/Kleinschreibung. Das Skript erstellt einen neuen Haltebereich, der diesem Fall zugeordnet ist.

  • Name des Halteraums: Der Name des Haltebereichs, den das Skript erstellt und mit der angegebenen Groß-/Kleinschreibung verknüpft.

  • Suchabfrage für einen abfragebasierten Halteraum: Sie können einen abfragebasierten Halteraum erstellen, sodass nur der Inhalt, der die angegebenen Suchkriterien erfüllt, in den Halteraum versetzt wird. Drücken Sie einfach die EINGABETASTE , wenn Sie zur Eingabe einer Suchabfrage aufgefordert werden, um alle Inhalte im Haltefeld zu platzieren.

  • Aktivieren des Halteraums oder nicht: Sie können festlegen, dass das Skript den Haltebereich aktiviert, nachdem es erstellt wurde, oder Sie können das Skript dazu aufstellen lassen, den Haltebereich zu erstellen, ohne ihn zu aktivieren. Wenn sie das Skript nicht aktiviert haben, können Sie es später im Complianceportal oder durch Ausführen der folgenden PowerShell-Befehle aktivieren:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
    
  • Name der Textdatei mit der Benutzerliste : Der Name der Textdatei aus Schritt 2, die die Liste der Benutzer enthält, die dem Halteraum hinzugefügt werden sollen. Wenn sich diese Datei im selben Ordner wie das Skript befindet, geben Sie einfach den Namen der Datei ein (z. B. HoldUsers.txt). Wenn sich die Textdatei in einem anderen Ordner befindet, geben Sie den vollständigen Pfadnamen der Datei ein.

Nachdem Sie die Informationen gesammelt haben, zu denen sie vom Skript aufgefordert werden, besteht der letzte Schritt darin, das Skript auszuführen, um den neuen Haltebereich zu erstellen und Benutzer hinzuzufügen.

  1. Speichern Sie den folgenden Text in einer Windows PowerShell Skriptdatei, indem Sie das Dateinamensuffix verwenden.ps1. Beispiel: 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. Öffnen Sie auf Ihrem lokalen Computer Windows PowerShell, und wechseln Sie zu dem Ordner, in dem Sie das Skript gespeichert haben.

  3. Führen Sie das Skript aus. Zum Beispiel:

    .\AddUsersToHold.ps1
    
  4. Geben Sie die Informationen ein, zu denen sie vom Skript aufgefordert werden.

    Das Skript stellt eine Verbindung mit Security & Compliance PowerShell her, erstellt dann den neuen Haltebereich im eDiscovery-Fall und fügt die Postfächer und OneDrive for Business für die Benutzer in der Liste hinzu. Sie können den Fall auf der Seite eDiscovery im Complianceportal aufrufen, um den neuen Halteraum anzuzeigen.

Nachdem die Ausführung des Skripts abgeschlossen ist, werden die folgenden Protokolldateien erstellt und in dem Ordner gespeichert, in dem sich das Skript befindet.

  • LocationsOnHold.txt: Enthält eine Liste der Postfächer und OneDrive for Business Websites, die das Skript erfolgreich im Haltebereich platziert hat.
  • LocationsNotOnHold.txt: Enthält eine Liste der Postfächer und OneDrive for Business Websites, die das Skript nicht im Haltebereich platziert hat. Wenn ein Benutzer über ein Postfach, aber nicht über eine OneDrive for Business Website verfügt, wird der Benutzer in die Liste der OneDrive for Business Websites aufgenommen, die nicht im Haltefeld platziert wurden.
  • GetCaseHoldPolicy.txt: Enthält die Ausgabe des Cmdlets Get-CaseHoldPolicy für den neuen Haltebereich, den das Skript nach dem Erstellen des neuen Haltebereichs ausgeführt hat. Die von diesem Cmdlet zurückgegebenen Informationen enthalten eine Liste von Benutzern, deren Postfächer und OneDrive for Business Websites im Haltefeld platziert wurden und ob der Haltepunkt aktiviert oder deaktiviert ist.
  • GetCaseHoldRule.txt: Enthält die Ausgabe des Cmdlets Get-CaseHoldRule für den neuen Haltebereich, den das Skript nach dem Erstellen des neuen Haltebereichs ausgeführt hat. Die von diesem Cmdlet zurückgegebenen Informationen umfassen die Suchabfrage, wenn Sie das Skript zum Erstellen eines abfragebasierten Haltebereichs verwendet haben.