New-ComplianceSearch: wie nutzt man die neue Version von Search-Mailbox

[Update]: Dieser Beitrag wurde zuletzt am 23. Mai 2024 aktualisiert. Search-Mailbox scheint endgültig verschwunden zu sein und das Limit der neuen Methode wurde von 10 auf 100 Elemente erhöht.

Wie in diesem Microsoft-Artikel angekündigt, wurde das Datum für die Einstellung älterer eDiscovery-Tools vom 1. April 2020 auf den 1. Juli 2020 verschoben. Zu diesem Zeitpunkt verlor das Search-Mailbox-Cmdlet seine offizielle Unterstützung. Während Search-Mailbox nach diesem Datum noch einige Zeit funktionierte, können Sie es jetzt nur noch im lokalen Exchange verwenden. Wie sieht es mit Exchange Online und Microsoft 365 aus? Nun, es gibt einen neuen Sheriff in der Stadt – sein Name ist New-ComplianceSearch. Die Verwendung des Cmdlets ist etwas umständlicher, daher werde ich mein Bestes tun, um Ihnen zu zeigen, wie Sie damit zurechtkommen.

New-ComplianceSearch

Search-Mailbox: End of Life

Seit einiger Zeit hat das Search-Mailbox-Cmdlet eine Warnung zurückgegeben, dass es bald keine Anwendung mehr finden werde. Laut der von PowerShell zurückgegebenen Warnung wurde das Lebensende auf den 1. Juli 2020 (zuvor 1. April 2020) festgelegt. Im Jahr 2023 wurde es zwar nicht offiziell unterstützt, funktionierte aber immer noch. Derzeit ist es in keinem von mir überprüften Tenant verfügbar, nachdem ich Connect-ExchangeOnline ausgeführt und alle verfügbaren Cmdlets heruntergeladen habe. Ruhe in Frieden, Search-Mailbox, wir haben dich ausgiebig genutzt.

Daher ist der Wechsel zu ComplianceSearch-Cmdlets derzeit keine Option mehr. Werfen wir jetzt also einen Blick darauf, welche Unterschiede es zwischen der alten und der neuen Methode zum Durchsuchen von Postfächern gibt.

Vergleich: ComplianceSearch und Search-Mailbox

Das Search-Mailbox-Cmdlet konnte zu folgenden Zwecken verwendet werden:

  • Wiederherstellung gelöschter Elemente (unsichtbar aus der Benutzerperspektive);
  • Kopieren bestimmter Elemente in ein Discovery-Postfach;
  • Löschen oder Leeren der Postfach-Inhalte;
  • Schätzung der Ergebnisse für eine ausgewählte Abfrage.

Diese Funktionen zusammen mit dem hochanpassbaren -SearchQuery-Attribut machten dieses einzelne Cmdlet äußerst nützlich. Natürlich gab es aber auch Schattenseiten. Und zwar wie folgt:

  • Sie mussten um das Limit von 10 000 Ergebnissen herum arbeiten.
  • Die in der SearchQuery verwendete KQL war etwas schwerfällig, insbesondere wenn Sie mehrere Bedingungen einbezogen haben. Um aber ehrlich zu sein, verwendet das -ContentMatchQuery- Attribut in der neuen Suchfunktion auch KQL.
  • Es gab keine Möglichkeit, gelöschte Elemente in demselben Postfach wiederherzustellen. Das Zielpostfach musste sich von dem durchsuchten Postfach unterscheiden.

Mit der *-ComplianceSearch-Cmdlet-Familie können Sie jetzt ähnliche Ergebnisse erzielen. Die Vorgehensweise ähnelt jedoch dem Wechsel von den Nachrichtenverfolgungsprotokollen (Message Tracking logs) zur Office 365-Nachrichtenverfolgung (Office 365 Message Trace). Die Hauptunterschiede sind:

  • Search-Mailbox benötigte die Mailbox-Search-Rolle, um Suchvorgänge durchzuführen, oder die Mailbox-Import-Export-Rolle, um Elemente zu löschen. *-ComplianceSearch-Cmdlets erfordern eine dieser Rollen UND eine sicherheits- und Compliance-bezogene Rolle.
  • Mit Search-Mailbox konnten Sie ein einzelnes Cmdlet verwenden, um einige Postfachinhalte zu suchen und zu löschen, während ComplianceSearch einige Schritte erfordert.
  • Search-Mailbox (wie der Name schon sagt) behandelte nur Postfach-bezogenen Inhalt. ComplianceSearch basiert auf Unified Search und ist daher auch für SharePoint-Websites und für öffentliche Ordner ausführbar.
  • Wenn es um ComplianceSearch-Cmdlets geht, reicht eine PowerShell-Fernsitzung für Exchange Online nicht aus. Sie müssen auch eine Verbindung zum Security & Compliance-Modul herstellen.
  • Jede von Ihnen durchgeführte New-ComplianceSearch kann im Microsoft Purview Compliance Portal angezeigt werden.
  • New-ComplianceSearchAction ist nicht für Massenbereinigung von Postfächern gedacht, da nur 100 Elemente pro Postfach gleichzeitig gelöscht werden. Wenn Sie der Meinung sind, dass das Limit im Vergleich zu den 10 000 im Fall von Search-Mailbox lächerlich ist, dann bedenken Sie Folgendes: das New-ComplianceSearchAction-Limit betrug zunächst 10 Elemente.

Vorbereitung auf die Verwendung von Compliance Search

Bevor Sie irgendwelche Aktionen im Zusammenhang mit der ComplianceSearch vornehmen, müssen Sie sich mit den richtigen Office 365-Diensten verbinden. Sie können dies in einer einzelnen PowerShell-Sitzung mit den folgenden Cmdlets tun:

Connect-ExchangeOnline
Connect-IPPSSession -UserPrincipalName <Ihr UPN>

Sie werden aufgefordert, Ihre Office 365-Administratoranmeldedaten einzugeben. Danach versucht die Konsole, Fernverbindungen zu Exchange Online und Security & Compliance PowerShell herzustellen. Die richtigen Module werden zusammen mit den zugänglichen Cmdlets automatisch installiert und importiert.

Lesen Sie mehr über Voraussetzungen und Problembehandlung für die moderne Methode zum Herstellen einer Verbindung mit Exchange Online

Als Nächstes müssen Sie sicherstellen, dass Sie über die richtigen Berechtigungen verfügen. Führen Sie das folgende Cmdlet aus, um herauszufinden, wer Zugriff auf die Mailbox-Search-Rolle hat:

Get-ManagementRoleAssignment -Role "Mailbox Search" -GetEffectiveUsers -Delegating $false

Der einfachste Weg, diese Rolle zuzuweisen, besteht darin, sich selbst einer Gruppe hinzuzufügen, die diese Rolle enthält. Zum Beispiel:

Add-RoleGroupMember "Discovery Management" -member [email protected] 

Beachten Sie, dass man mit der Mailbox-Search-Rolle Suchvorgänge erstellen kann, aber nur mit der Mailbox-Import-Export-Rolle ist es für Administratoren möglich, die Suchergebnisse zu löschen oder zu exportieren.

Im nächsten Schritt überprüfen Sie die eDiscovery-Administratoren:

Get-eDiscoveryCaseAdmin

Und fügen Sie sich bei Bedarf dieser Gruppe hinzu:

Add-eDiscoveryCaseAdmin [email protected]

Wie wird ein ComplianceSearch-Cmdlet ausgeführt

Sobald Sie verbunden sind und Ihnen die richtigen Berechtigungen zugewiesen wurden, können Sie Ihre Suche starten. Zunächst müssen Sie eine Suche mit dem New-ComplianceSearch-Cmdlet konfigurieren. Sie können beispielsweise alle Postfächer durchsuchen und nach einem bestimmten Schlüsselwort im Betreff der Nachricht suchen:

New-ComplianceSearch -name "suspicious emails" -ExchangeLocation all -ContentMatchQuery 'subject:"suspicious"'

Wenn Sie den Suchbereich weiter einschränken möchten, können Sie in -ContentMatchQuery die logischen Operatoren AND und OR verwenden. Um Ihre Suche auf ein Datum zu stützen, an dem die Elemente empfangen wurden, können Sie das folgende kurze Skript verwenden, welches Elemente zurückgibt, die zwei Tage alt und neuer sind:

$date= (get-date).adddays(-2);
$date = $date.ToShortDateString();
$date = [scriptblock]::create($date);
New-ComplianceSearch "mailbox items newer than 2 days"
-ExchangeLocation all -ContentMatchQuery "received>=$date"

Sie können das Datum auch manuell festlegen. Das sichere Format ist JJJJ-MM-TT.

Das -ContentMatchQuery-Attribut funktioniert genauso wie das -SearchQuery-Attribut im Fall von Search-Mailbox. Eine ausführliche Anleitung zur Verwendung von SearchQuery finden Sie hier.

Wenn Sie inaktive Postfächer durchsuchen möchten, benötigen Sie ein zusätzliches Attribut: -AllowNotFoundExchangeLocationsEnabled $true. Wenn Sie Ihre Suche auf ein einzelnes inaktives Postfach richten, muss dem Benutzerprinzipalnamen (UPN) außerdem ein Punkt (.) vorangestellt werden, wie unten dargestellt:

New-ComplianceSearch "Search inactive mailbox" -ExchangeLocation [email protected] -AllowNotFoundExchangeLocationsEnabled $true

Nachdem Sie die Bedingungen für die Suche festgelegt haben, müssen Sie ein separates Cmdlet ausführen, um sie zu starten:

Start-ComplianceSearch “suspicious emails” /*oder ein anderer Name, den Sie angegeben haben. Führen Sie Get-ComplianceSearch aus, um sich daran zu erinnern, welche Namen Sie zuvor verwendet haben.*/

Sie können das New-ComplianceSearch-Cmdlet auch wie folgt an Start-ComplianceSearch weiterleiten:

New-ComplianceSearch … | Start-ComplianceSearch

Führen Sie das folgende Cmdlet aus, um den Fortschritt Ihrer Suche zu überprüfen und grundlegende Informationen zu den aktuellen Ergebnissen zu erhalten:

Get-ComplianceSearch | FL name,items,size,jobprogress,status 

Das Lustige, was dabei passieren kann, ist eine Reihe überraschender Ergebnisse:

New-ComplianceSearch - Fehler beim Überprüfen des Suchstatus

Basierend auf diesen Ergebnissen würde ich davon ausgehen, dass alle Jobs erfolgreich abgeschlossen wurden, aber keine Elemente gefunden wurden. Wie Sie vielleicht vermuten, ist die Anzahl der oben angezeigten Testsuchen darauf zurückzuführen, dass ich versucht habe herauszufinden, was ich falsch gemacht habe.

Wie sich herausstellte, lag es nicht an mir. Get-ComplianceSearch ist einfach nicht ganz ehrlich. Was überraschend ist: wenn Sie das Cmdlet für einen einzelnen Compliance Search-Fall ausführen, werden tatsächlich die richtigen Werte zurückgegeben. Um also alle Ihre Suchanfragen aufzulisten und tatsächlich etwas darüber zu erfahren, führen Sie den folgenden Code aus:

$searches = Get-ComplianceSearch; foreach ($search in $searches){Get-ComplianceSearch $search.name | FL Name,Items,Size,JobProgress,Status}
New-ComplianceSearch - Erfolg beim Überprüfen des Suchstatus

Was passiert, wenn Sie eine Compliance Search erneut ausführen?

Sie können jede bereits abgeschlossene Suche neu starten. Das sind gute Nachrichten: jetzt ist es möglich, die Suche mit den häufigsten Abfragen erneut auszuführen. Oder verwenden Sie das Set-ComplianceSearch-Cmdlet, um die Suchkriterien zu ändern, und führen Sie die Start-ComplianceSearch gleich danach aus. Denken Sie daran, dass SoftDeleted-Elemente (vorläufig gelöscht) in den Ergebnissen erneut zurückgegeben werden.

Wie löscht man Postfachinhalte in Office 365 über PowerShell?

Nachdem Sie die ComplianceSearch eingerichtet und abgeschlossen haben, müssen Sie die New-ComplianceSearchAction mit dem Attribut -Purge verwenden, um Elemente zu löschen. Zum Beispiel:

New-ComplianceSearchAction -SearchName “suspicious emails” -purge -purgetype /*SoftDelete/HardDelete*/

Nachdem Sie das Cmdlet New-ComplianceSearchAction ausgeführt haben, fordert PowerShell Sie auf, zweimal darüber nachzudenken und zu bestätigen:

Bestätigung der New-ComplianceSearchAction

Wenn Sie das -PurgeType-Attribut nicht angeben, werden die Ergebnisse vorläufig gelöscht. Dies bedeutet, dass Benutzer diese gelöschten Elemente vor Ablauf des Aufbewahrungszeitraums wiederherstellen können. Mit dem HardDelete-Wert werden Elemente endgültig gelöscht, es sei denn, es ist ein Beweissicherungsverfahren oder eine Aufbewahrungsrichtlinie eingerichtet, um das Löschen bestimmter Elemente zu verhindern. Beachten Sie, dass die Beschränkung auf „100 Elemente pro Postfach“ der New-ComplianceSearchAction erfordert, dass Sie Präzisionssuchen durchführen oder das Cmdlet in einer Schleife ausführen.

Erfahren Sie mehr über Aufbewahrungsrichtlinien und Beweissicherungsverfahren in Office 365

Problembehandlung

Es gibt einige häufige Probleme, die Sie während des obigen Verfahrens begegnen können. Im Folgenden liste ich die häufigsten Fehler und deren Behebungsmöglichkeiten auf:

Nicht als Name eines Cmdlets erkannt

Einer der häufigsten PowerShell-Benutzern bekannten Fehler ist:

New-ComplianceSearchAction: The term 'New-ComplianceSearchAction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Das Problem liegt daran, dass es mehrere Gründe geben kann, warum diese Warnung angezeigt wird:

  1. Problem: Fehler beim Herstellen einer Verbindung mit dem Microsoft Purview Compliance Portal
    Lösung: führen Sie Get-PSSession aus, um zu überprüfen, ob Ihre Fernsitzungen über den Status Opened und Available verfügen. Sie können Get-PSSession | Remove-PSSession verwenden und die Schritte aus dem Abschnitt Vorbereitung auf die Verwendung von Compliance Search wiederholen. Stellen Sie sicher, dass Sie die richtigen Anmeldedaten verwenden.
  2. Problem: Fehler beim Importieren des Moduls mit verfügbaren Cmdlets
    Lösung: aus irgendeinem Grund kann Ihre PowerShell-Sitzung möglicherweise nicht das richtige Office 365-Dienstmodul importieren. Um das Problem zu beheben, führen Sie Get-Module | Import-Module aus.
  3. Problem: fehlende Berechtigungen
    Lösung: wenn Sie keine Berechtigungen haben, müssen sie Ihnen zugewiesen werden. Wenn Sie nicht über die erforderlichen Berechtigungen verfügen, sich selbst als Mitglied der richtigen Rollengruppe hinzufügen, müssen Sie den Zugriff bei einem anderen Administrator anfordern.
  4. Problem: Verbindungszeitüberschreitung
    Lösung: Ihre Fernsitzung läuft möglicherweise nach einer Weile ab. Um dies zu beheben, wiederholen Sie die Schritte aus dem Abschnitt Vorbereitung auf die Verwendung von Compliance Search.
  5. Problem: falsch geschriebenes Cmdlet
    Lösung: New-ComplainceSearch ist öfter zu sehen als man denkt. Ich habe sogar überlegt, den Alias New-ComplainceSearch für das richtige Cmdlet zu erstellen. Vielleicht bin ich der Einzige, der die Cmdlets manuell eingibt, aber es schadet nicht, die Rechtschreibung zu überprüfen, wenn Sie ein Cmdlet eingeben. Sie können auch „New-Com“ eingeben und per Tabulatortaste zum richtigen Cmdlet gelangen. IntelliSense macht Ihr Leben einfacher.

Die Suche läuft immer noch

Dieser Fehler tritt auf, wenn Sie zu voreilig sind oder Suchvorgänge mit sehr breiten Kriterien ausführen.

Unable to execute the task. Reason: The search "*" is still running or it didn't return any results. Please wait until the search finishes or edit the query and run the search again.

Um die Suche zu beschleunigen, stellen Sie sicher, dass Sie nur die relevanten Verzeichnisse durchsuchen.

Führen Sie Folgendes aus, um den Status der Compliance Search zu überprüfen:

Get-ComplianceSearch | FL name,items,size,jobprogress,status

Das Objekt der Compliance Search ist bereits vorhanden

Dieser Fehler wird durch Ausführen von New-ComplianceSearch mit einem bereits vorhandenen Namen verursacht.

The compliance search object "*" already exists within your organization. 

Verwenden Sie zu dessen Behebung entweder einen neuen eindeutigen Namen oder führen Sie stattdessen Set-ComplianceSearch aus.

2 thoughts on “New-ComplianceSearch: wie nutzt man die neue Version von Search-Mailbox


  1. Hey,

    danke für den Artikel. Ich hätte eine kurze Frage, woran kann es liegen, wenn man nach dem HardDelete Purge den Status überprüft mit und unter dem Attribut Results Item Count 1 steht, failed count 0, aber die E-Mail immer noch Stunden nach dem Purge über Exchange Online (und vermutlich auch im Account) sichtbar ist?

    Wurde alles, mit den korrekten Berechtigungen über die Powershell gemacht, auch der manuelle Weg über das UI, über die Inhaltssuche funktioniert nicht..

    Viele Grüße

    • Hallo Dorian,
      Wenn die Inhaltssuche im Microsoft Purview Compliance Portal nicht funktioniert und PowerShell nur vorgibt, die Elemente zu löschen, deutet dies darauf hin, dass dein Konto möglicherweise doch nicht über die entsprechenden Berechtigungen verfügt. Überprüfe noch einmal, ob dies nicht der Fall ist, und prüfe möglicherweise, ob keine Richtlinien für bedingten Zugriff eingesetzt worden sind, die dich blockieren könnten. Wenn dies nicht hilft, musst du diesen Fall leider an den Kundendienst von Microsoft weiterleiten.
      Gruß,

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Verantwortlicher für Ihre personenbezogenen Daten ist CodeTwo sp. z o.o. sp. k.
Weitere Informationen finden Sie in unserer Datenschutzerklärung.