Verwenden eines Skripts zum Erstellen eines Berichts zu Haltebereichen in eDiscovery-Fällen
Tipp
eDiscovery (Vorschauversion) ist jetzt im neuen Microsoft Purview-Portal verfügbar. Weitere Informationen zur Verwendung der neuen eDiscovery-Benutzeroberfläche finden Sie unter Informationen zu eDiscovery (Vorschauversion).
Mit dem Skript in diesem Artikel können eDiscovery-Administratoren und eDiscovery-Manager einen Bericht generieren, der Informationen zu allen Haltebereichen enthält, die eDiscovery (Standard) und eDiscovery (Premium)-Fällen im Microsoft Purview-Complianceportal zugeordnet sind. Der Bericht enthält Informationen, z. B. den Namen des Falls, dem ein Haltezeichen zugeordnet ist, die Inhaltsspeicherorte, die im Halteraum platziert werden, und ob der Halteraum abfragebasiert ist. Wenn fälle ohne Haltebereiche vorhanden sind, erstellt das Skript einen zusätzlichen Bericht mit einer Liste von Fällen ohne Haltebereiche.
Eine ausführliche Beschreibung der im Bericht enthaltenen Informationen finden Sie im Abschnitt Weitere Informationen .
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 Organisation bei der Verwaltung von Datensicherheits- und Complianceanforderungen unterstützen können. Beginnen Sie jetzt im Microsoft Purview-Testversionshub. Erfahren Sie mehr über Anmelde- und Testbedingungen.
Admin Anforderungen und Skriptinformationen
- Um einen Bericht zu allen eDiscovery-Fällen in Ihrem organization zu generieren, müssen Sie ein eDiscovery-Administrator in Ihrem organization sein. Wenn Sie ein eDiscovery-Manager sind, enthält der Bericht nur Informationen zu den Fällen, auf die Sie zugreifen können. Weitere Informationen zu eDiscovery-Berechtigungen finden Sie unter Zuweisen von eDiscovery-Berechtigungen.
- Das Skript in diesem Artikel weist eine minimale Fehlerbehandlung auf. Der Hauptzweck besteht darin, schnell Berichte zu den Haltebereichen zu erstellen, die den eDiscovery-Fällen in Ihrem organization zugeordnet sind.
- Die in diesem Artikel bereitgestellten Beispielskripts werden von keinem standardmäßigen Supportprogramm oder Dienst von Microsoft 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: Herstellen einer Verbindung mit Security & Compliance Center PowerShell
Der erste Schritt besteht darin, eine Verbindung mit Security & Compliance Center PowerShell für Ihre Organisation herzustellen. Schrittweise Anleitungen erhalten Sie unter Herstellen einer Verbindung mit Security & Compliance PowerShell.
Schritt 2: Ausführen des Skripts zum Melden von Haltebereichen im Zusammenhang mit eDiscovery-Fällen
Nachdem Sie eine Verbindung mit Security & Compliance PowerShell hergestellt haben, besteht der nächste Schritt darin, das Skript zu erstellen und auszuführen, das Informationen zu den eDiscovery-Fällen in Ihrem organization sammelt.
Speichern Sie den folgenden Text in einer Windows PowerShell Skriptdatei, indem Sie das Dateinamensuffix .ps1 verwenden, z. B. CaseHoldsReport.ps1.
#script begin " " write-host "***********************************************" write-host "Security & Compliance Center " -foregroundColor yellow -backgroundcolor darkgreen write-host "eDiscovery cases - Holds report " -foregroundColor yellow -backgroundcolor darkgreen write-host "***********************************************" " " #prompt users to specify a path to store the output files $time = get-date -Format dd-MM-yyyy_hh.mm $Path = Read-Host 'Enter a folder path to save the report to a .csv file (filename is created automatically)' $outputpath = $Path + '\' + 'CaseHoldsReport' + ' ' + $time + '.csv' $noholdsfilepath = $Path + '\' + 'CaseswithNoHolds' + $time + '.csv' #add case details to the csv file function add-tocasereport { Param([string]$casename, [String]$casetype, [String]$casestatus, [datetime]$casecreatedtime, [string]$casemembers, [datetime]$caseClosedDateTime, [string]$caseclosedby, [string]$holdname, [String]$Holdenabled, [string]$holdcreatedby, [string]$holdlastmodifiedby, [string]$ExchangeLocation, [string]$sharePointlocation, [string]$ContentMatchQuery, [datetime]$holdcreatedtime, [datetime]$holdchangedtime, [string]$holdstatus, [string]$holderror ) $addRow = New-Object PSObject Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case name" -Value $casename Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case type" -Value $casetype Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case status" -Value $casestatus Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case members" -Value $casemembers Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case created time" -Value $casecreatedtime Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case closed time" -Value $caseClosedDateTime Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Case closed by" -Value $caseclosedby Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold name" -Value $holdname Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold enabled" -Value $Holdenabled Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold created by" -Value $holdcreatedby Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold last changed by" -Value $holdlastmodifiedby Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Exchange locations" -Value $ExchangeLocation Add-Member -InputObject $addRow -MemberType NoteProperty -Name "SharePoint locations" -Value $sharePointlocation Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold query" -Value $ContentMatchQuery Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold created time (UTC)" -Value $holdcreatedtime Add-Member -InputObject $addRow -MemberType NoteProperty -Name "Hold changed time (UTC)" -Value $holdchangedtime Add-Member -InputObject $addrow -MemberType NoteProperty -Name "Hold Status" -Value $holdstatus Add-Member -InputObject $addrow -MemberType NoteProperty -Name "Hold Error" -Value $holderror $allholdreport = $addRow | Select-Object "Case name", "Case type", "Case status", "Hold name", "Hold enabled", "Case members", "Case created time", "Case closed time", "Case closed by", "Exchange locations", "SharePoint locations", "Hold query", "Hold created by", "Hold created time (UTC)", "Hold last changed by", "Hold changed time (UTC)", "Hold Status", "Hold Error" $allholdreport | export-csv -path $outputPath -notypeinfo -append -Encoding ascii } #get information on the cases and pass values to the case report function " " write-host "Gathering a list of eDiscovery (Standard) cases and holds..." " " $edc = Get-ComplianceCase -ErrorAction SilentlyContinue foreach ($cc in $edc) { write-host "Working on case :" $cc.name if ($cc.status -eq 'Closed') { $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';' add-tocasereport -casename $cc.name -casetype $cc.casetype -casestatus $cc.Status -caseclosedby $cc.closedby -caseClosedDateTime $cc.ClosedDateTime -casemembers $cmembers } else { $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';' $policies = Get-CaseHoldPolicy -Case $cc.Name | % { Get-CaseHoldPolicy $_.Name -Case $_.CaseId -DistributionDetail } if ($policies -ne $NULL) { foreach ($policy in $policies) { $rule = Get-CaseHoldRule -Policy $policy.name add-tocasereport -casename $cc.name -casetype $cc.casetype -casemembers $cmembers -casestatus $cc.Status -casecreatedtime $cc.CreatedDateTime -holdname $policy.name -holdenabled $policy.enabled -holdcreatedby $policy.CreatedBy -holdlastmodifiedby $policy.LastModifiedBy -ExchangeLocation (($policy.exchangelocation.name) -join ';') -SharePointLocation (($policy.sharePointlocation.name) -join ';') -ContentMatchQuery $rule.ContentMatchQuery -holdcreatedtime $policy.WhenCreatedUTC -holdchangedtime $policy.WhenChangedUTC -holdstatus $policy.DistributionStatus -holderror $policy.DistributionResults } } else { Write-Host "No hold policies found in case:" $cc.name -foregroundColor 'Yellow' " " [string]$cc.name | out-file -filepath $noholdsfilepath -append } } } #get information on the cases and pass values to the case report function " " write-host "Gathering a list of eDiscovery (Premium) cases and holds..." " " $edc = Get-ComplianceCase -CaseType Advanced -ErrorAction SilentlyContinue foreach ($cc in $edc) { write-host "Working on case :" $cc.name if ($cc.status -eq 'Closed') { $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';' add-tocasereport -casename $cc.name -casestatus $cc.Status -casetype $cc.casetype -caseclosedby $cc.closedby -caseClosedDateTime $cc.ClosedDateTime -casemembers $cmembers } else { $cmembers = ((Get-ComplianceCaseMember -Case $cc.name).windowsLiveID) -join ';' $policies = Get-CaseHoldPolicy -Case $cc.Name | % { Get-CaseHoldPolicy $_.Name -Case $_.CaseId -DistributionDetail } if ($policies -ne $NULL) { foreach ($policy in $policies) { $rule = Get-CaseHoldRule -Policy $policy.name add-tocasereport -casename $cc.name -casetype $cc.casetype -casemembers $cmembers -casestatus $cc.Status -casecreatedtime $cc.CreatedDateTime -holdname $policy.name -holdenabled $policy.enabled -holdcreatedby $policy.CreatedBy -holdlastmodifiedby $policy.LastModifiedBy -ExchangeLocation (($policy.exchangelocation.name) -join ';') -SharePointLocation (($policy.sharePointlocation.name) -join ';') -ContentMatchQuery $rule.ContentMatchQuery -holdcreatedtime $policy.WhenCreatedUTC -holdchangedtime $policy.WhenChangedUTC -holdstatus $policy.DistributionStatus -holderror $policy.DistributionResults } } else { write-host "No hold policies found in case:" $cc.name -foregroundColor 'Yellow' " " [string]$cc.name | out-file -filepath $noholdsfilepath -append } } } " " Write-host "Script complete! Report files saved to this folder: '$Path'" " " #script end
Navigieren Sie in der Windows PowerShell Sitzung, die in Schritt 1 geöffnet wurde, zu dem Ordner, in dem Sie das Skript gespeichert haben.
Führen Sie das Skript aus. Zum Beispiel:
.\CaseHoldsReport.ps1
Das Skript fordert sie zur Eingabe eines Zielordners auf, in dem der Bericht gespeichert werden soll.
Geben Sie den vollständigen Pfadnamen des Ordners ein, in dem der Bericht gespeichert werden soll, und drücken Sie dann die EINGABETASTE.
Tipp
Um den Bericht im selben Ordner zu speichern, in dem sich das Skript befindet, geben Sie einen Punkt (".") ein, wenn Sie zur Eingabe eines Zielordners aufgefordert werden. Um den Bericht in einem Unterordner in dem Ordner zu speichern, in dem sich das Skript befindet, geben Sie einfach den Namen des Unterordners ein.
Das Skript beginnt mit der Erfassung von Informationen zu allen eDiscovery-Fällen in Ihrem organization. Greifen Sie nicht auf die Berichtsdatei zu, während das Skript ausgeführt wird. Nach Abschluss des Skripts wird eine Bestätigungsmeldung in der Windows PowerShell Sitzung angezeigt. Nachdem diese Meldung angezeigt wurde, können Sie auf den Bericht in dem Ordner zugreifen, den Sie in Schritt 4 angegeben haben. Der Dateiname für den Bericht lautet
CaseHoldsReport<DateTimeStamp>.csv
.Darüber hinaus erstellt das Skript auch einen Bericht mit einer Liste von Fällen, die keine Haltebereiche haben. Der Dateiname für diesen Bericht lautet
CaseswithNoHolds<DateTimeStamp>.csv
.Hier sehen Sie ein Beispiel für die Ausführung des CaseHoldsReport.ps1-Skripts.
Weitere Informationen
Der Fall enthält den Bericht, der erstellt wird, wenn Sie das Skript in diesem Artikel ausführen, die folgenden Informationen zu jedem Haltebereich. Wie bereits erläutert, müssen Sie ein eDiscovery-Administrator sein, um Informationen für alle Haltebereiche in Ihrem organization zurückzugeben. Weitere Informationen zu Fallsperren finden Sie unter eDiscovery-Fälle.
- Der Name des Halteraums und der Name des eDiscovery-Falls, dem der Halteraum zugeordnet ist.
- Gibt an, ob der Halteraum einem eDiscovery -Fall (Standard) oder einem eDiscovery -Fall (Premium) zugeordnet ist.
- Gibt an, ob der eDiscovery-Fall aktiv oder geschlossen ist.
- Gibt an, ob der Haltepunkt aktiviert oder deaktiviert ist.
- Die Mitglieder des eDiscovery-Falls, dem der Halteraum zugeordnet ist. Fallmitglieder können einen Fall anzeigen oder verwalten, je nachdem, welche eDiscovery-Berechtigungen ihnen zugewiesen wurden.
- Die Uhrzeit und das Datum, an dem der Fall erstellt wurde.
- Wenn ein Fall geschlossen wird, die Person, die ihn geschlossen hat, sowie die Uhrzeit und das Datum, an dem er geschlossen wurde.
- Die Speicherorte der Exchange-Postfächer und SharePoint-Websites, die sich im Halteraum befinden.
- Wenn der Halteraum abfragebasiert ist, die Abfragesyntax.
- Die Uhrzeit und das Datum, zu dem der Halteraum erstellt wurde, sowie die Person, die ihn erstellt hat.
- Die Uhrzeit und das Datum, an dem der Haltepunkt zuletzt geändert wurde, sowie die Person, die ihn geändert hat.