Verwenden eines Skripts zum Hinzufügen von Benutzern zu einem Haltebereich in einem eDiscovery-Fall im Office 365 Security & Compliance Center

Das Office 365 Security & Compliance Center stellt eine Vielzahl von Windows PowerShell-Cmdlets bereit, mit denen Sie zeitraubende Aufgaben im Zusammenhang mit dem Erstellen und Verwalten von eDiscovery-Fällen automatisieren können. Aktuell ist die Verwendung des Tools für eDiscovery-Fälle in Security & Compliance Center zum Ablegen einer großen Anzahl von Speicherorten für Inhalte von Verwaltungsberechtigten im in-Situ-Speicher zeitaufwändig und erfordert vorbereitende Schritte. Vor dem Erstellen eines in-Situ-Speichers müssen Sie die URL für jede OneDrive for Business-Website erfassen, die Sie im in-Situ-Speicher ablegen möchten. Anschließend müssen Sie für jeden Benutzer, den Sie im in-Situ-Speicher ablegen möchten, dem in-Situ-Speicher das Postfach und die OneDrive for Business-Website des Benutzers hinzufügen. In kommenden Releases des Security & Compliance Centers wird das einfacher zu erledigen sein. Bis dahin können Sie das Skript in diesem Artikel verwenden, um diesen Prozess zu automatisieren.

Das Skript fordert Sie zum Eingeben des Namens der MeineWebsite-Domäne Ihrer Organisation (z. B. contoso in der URL "https://contoso-my.sharepoint.com"), des Namens eines vorhandenen eDiscovery-Falls, des Namens des neuen in-Situ-Speichers, der dem Fall zugeordnet ist, einer Liste der E-Mail-Adressen der Benutzer, die Sie im in-Situ-Speicher ablegen möchten, und einer Suchabfrage auf, die verwendet wird, wenn Sie einen abfragebasierten in-Situ-Speicher erstellen möchten. Anschließend ruft das Skript die URL für die OneDrive for Business-Website für jeden Benutzer auf der Liste ab, erstellt den neuen in-Situ-Speicher und fügt dann dem in-Situ-Speicher das Postfach und die OneDrive for Business-Website für jeden Benutzer auf der Liste hinzu. Das Skript generiert außerdem Protokolldateien, die Informationen über den neuen in-Situ-Speicher enthalten.

Dies bewerkstelligen Sie mit folgenden Schritten:

Schritt 1: Installieren der SharePoint Online-Verwaltungsshell

Schritt 2: Generieren einer Benutzerliste

Schritt 3: Ausführen des Skripts zum Erstellen eines in-Situ-Speichers und Hinzufügen von Benutzern

Erste Schritte

  • Sie müssen Mitglied der Rollengruppe "eDiscovery-Manager" im Security & Compliance Center sowie ein globaler SharePoint Online-Administrator sein, um das Skript in Schritt 3 auszuführen. Weitere Informationen finden Sie unter Zuweisen von eDiscovery-Berechtigungen im Office 365 Security & Compliance Center.

  • Einem in-Situ-Speicher, der einem eDiscovery-Fall im Security & Compliance Center zugeordnet ist, können maximal 1.000 Postfächer und 100 Websites hinzugefügt werden. Ausgehend von der Annahme, dass jeder Benutzer, den Sie einem in-Situ-Speicher hinzufügen möchten, über eine OneDrive for Business-Website verfügt, können Sie einem in-Situ-Speicher mithilfe des in diesem Artikel behandelten Skripts maximal 100 Benutzer hinzufügen.

  • Achten Sie darauf, dass Sie die in Schritt 2 erstellte Benutzerliste und das Skript in Schritt 3 im selben Ordner speichern. Dies erleichtert die Ausführung des Skripts.

  • Das Skript fügt die Benutzerliste einem neuen in-Situ-Speicher hinzu, der einem vorhandenen Fall zugeordnet ist. Achten Sie darauf, dass der Fall, dem Sie den in-Situ-Speicher zuordnen möchten, vor der Ausführung des Skripts erstellt wurde.

  • Das Skript enthält eine minimale Fehlerbehandlungsroutine. Sein Hauptzweck besteht darin, das Postfach und die OneDrive for Business-Website jedes Benutzers dem in-Situ-Speicher schnell und einfach hinzuzufügen.

  • Die in diesem Thema bereitgestellten Beispielskripts werden unter keinem Standardsupportprogramm oder -dienst von Microsoft unterstützt. Die Beispielskripts werden WIE BESEHEN ohne jegliche Gewährleistung bereitgestellt. 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 haften Microsoft, seine Autoren oder eine andere Person, die an der Erstellung, Herstellung oder Zustellung/Verteilung der Skripts beteiligt ist für Schäden jeglicher Art (einschließlich, aber nicht beschränkt auf Schäden durch verlorene Geschäftsgewinne, Geschäftsunterbrechung, Verlust von Geschäftsdaten oder andere finanzielle Verluste), die aus der Verwendung oder der Unfähigkeit der Verwendung der Beispielskripts oder der Dokumentation entstehen, selbst wenn Microsoft auf die Möglichkeit solcher Schäden hingewiesen wurde.

Seitenanfang

Schritt 1: Installieren der SharePoint Online-Verwaltungsshell

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

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

Seitenanfang

Schritt 2: Generieren einer Benutzerliste

Das Skript in Schritt 3 erstellt einen in Situ-Speicher, der einem eDiscovery-Fall zugeordnet ist, und fügt dem in-Situ-Speicher die Postfächer und OneDrive for Business-Websites einer Benutzerliste hinzu. Sie können einfach die E-Mail-Adressen in eine Textdatei eingeben oder einen Befehl in der Windows PowerShell ausführen, um eine Liste der E-Mail-Adressen abzurufen, und diese dann in einer Datei speichern (die sich im selben Ordner befindet, in dem Sie das Skript in Schritt 3 gespeichert haben).

Hier ist ein PowerShell-Befehl (den Sie mithilfe der Remote-PowerShell ausführen, die mit Ihrer Exchange Online-Organisation verbunden ist), um eine Liste der E-Mail-Adressen für alle Benutzer in Ihrer Organisation abzurufen und diese 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 die Kopfzeile, die den Eigenschaftsnamen PrimarySmtpAddress enthält. Entfernen Sie dann alle E-Mail-Adressen mit Ausnahme der Adressen der Benutzer, die Sie dem in Schritt 3 zu erstellenden in-Situ-Speicher hinzufügen möchten. Stellen Sie sicher, dass es keine leeren Zeilen vor oder hinter der Liste der E-Mail-Adressen gibt.

Seitenanfang

Schritt 3: Ausführen des Skripts zum Erstellen eines in-Situ-Speichers und Hinzufügen von Benutzern

Wenn Sie das Skript in diesem Schritt ausführen, fragt es folgende Informationen von Ihnen ab. Stellen Sie sicher, dass Sie diese Informationen zur Hand haben, bevor Sie das Skript ausführen.

  • Ihre Benutzeranmeldeinformationen   Das Skript verwendet Ihre Anmeldeinformationen zum Herstellen einer Verbindung mit dem Security & Compliance Center mithilfe von Remote-PowerShell. Außerdem verwendet es diese Anmeldeinformationen für den Zugriff auf SharePoint Online, um die OneDrive for Business-URLs für die Liste der Benutzer abzurufen.

  • Name der Domäne Ihrer "MeineWebsite"   Die "MeineWebsite"-Domäne ist die Domäne, die alle OneDrive for Business-Websites in Ihrer Organisation enthält. Wenn die URL für Ihre "MeineWebsite"-Domäne z. B. https://contoso-my.sharepoint.com lautet, geben Sie contoso ein, wenn das Skript den Namen Ihrer "MeineWebsite"-Domäne abfragt.

  • Name des Falls   Der Name eines vorhandenen Falls. Das Skript erstellt einen neuen in-Situ-Speicher, der diesem Fall zugeordnet wird.

  • Name des in-Situ-Speichers   Der Name des in-Situ-Speichers, der vom Skript erstellt und dem angegebenen Fall zugeordnet wird.

  • Suchabfrage für einen abfragebasierten in-Situ-Speicher   Sie können einen abfragebasierten in-Situ-Speicher erstellen, sodass nur Inhalte, die den angegebenen Suchkriterien entsprechen, dem in-Situ-Speicher zugewiesen werden. Um alle Inhalte dem in-Situ-Speicher zuzuweisen, drücken Sie die EINGABETASTE, wenn Sie zur Eingabe einer Suchabfrage aufgefordert werden.

  • Wahlweise Aktivierung des in-Situ-Speichers   Sie können den in-Situ-Speicher vom Skript nach der Erstellung aktivieren lassen oder das Skript den in-Situ-Speicher erstellen lassen, ohne ihn zu aktivieren. Wenn Sie den in-Situ-Speicher nicht durch das Skript aktivieren lassen, können Sie ihn später im Security & Compliance Center aktivieren oder die folgenden PowerShell-Befehle ausführen:

    Set-CaseHoldPolicy -Identity <name of the hold> -Enabled $true
    Set-CaseHoldRule -Identity <name of the hold> -Disabled $false
  • Name der Textdatei mit der Liste der Benutzer   Der Name der Textdatei aus Schritt 2, die die Liste der Benutzer enthält, die dem in-Situ-Speicher hinzugefügt werden sollen. Wenn sich diese Datei im gleichen 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 deren Eingabe Sie das Skript auffordert, besteht der abschließende Schritt im Ausführen des Skripts, um den neuen in-Situ-Speicher zu erstellen und ihm Benutzer hinzuzufügen.

  1. Speichern Sie den folgenden Text in einer Windows PowerShell-Skriptdatei, und verwenden Sie dafür das Dateinamensuffix ".ps1", z. B. "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. Öffnen Sie auf dem lokalen Computer Windows PowerShell, und wechseln Sie zu dem Ordner, in dem Sie das Skript gespeichert haben.

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

    .\AddUsersToHold.ps1
  4. Geben Sie die Informationen ein, nach denen das Skript Sie fragt.

    Das Skript stellt mithilfe der Remote-PowerShell eine Verbindung mit Security & Compliance Center her, erstellt dann den neuen in-Situ-Speicher im eDiscovery-Fall und fügt die Postfächer und OneDrive for Business-Websites für die Benutzer auf der Liste hinzu. Sie können im Security & Compliance Center auf der eDiscovery-Seite zu dem Fall navigieren, um den neuen in-Situ-Speicher anzuzeigen.

Nachdem die Ausführung des Skripts abgeschlossen wurde, erstellt es die folgenden Protokolldateien und speichert sie in dem Ordner, in dem das Skript gespeichert ist.

  • LocationsOnHold.txt   Enthält eine Liste der Postfächer und OneDrive for Business-Websites, die dem in-Situ-Speicher vom Skript erfolgreich zugewiesen wurden.

  • LocationsNotOnHold.txt   Enthält eine Liste der Postfächer und OneDrive for Business-Websites, die dem in-Situ-Speicher nicht vom Skript zugewiesen wurden. Wenn ein Benutzer ein Postfach jedoch keine OneDrive for Business-Website besitzt, wird der Benutzer in die Liste der OneDrive for Business-Websites aufgenommen, die dem in-Situ-Speicher nicht zugewiesen wurden.

  • GetCaseHoldPolicy.txt   Enthält die Ausgabe des Get-CaseHoldPolicy-Cmdlets für den neuen in-Situ-Speicher, das vom Skript nach dem Erstellen des neuen in-Situ-Speichers ausgeführt wurde. Die von diesem Cmdlet zurückgegebenen Informationen beinhalten eine Liste der Benutzer, deren Postfächer und OneDrive for Business-Websites dem in-Situ-Speicher zugewiesen wurden und geben an, ob der in-Situ-Speicher aktiviert oder deaktiviert ist.

  • GetCaseHoldRule.txt   Enthält die Ausgabe des Get-CaseHoldRule-Cmdlets für den neuen in-Situ-Speicher, das vom Skript nach dem Erstellen des neuen in-Situ-Speichers ausgeführt wurde. Die von diesem Cmdlet zurückgegebenen Informationen beinhalten die Suchabfrage, wenn Sie das Skript zum Erstellen eines abfragebasierten in-Situ-Speichers verwendet haben.

Seitenanfang

Ihre Fähigkeiten erweitern
Schulung erkunden
Neue Funktionen als Erster erhalten
An Office Insider teilnehmen

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×