Betrifft: Exchange Online, Exchange 2019, Exchange 2016, Exchange 2013, Exchange 2010
In diesem Artikel zeige ich Ihnen, wie Sie das PowerShell-Cmdlet Search-Mailbox zusammen mit dem Schalter -DeleteContent verwenden, um E-Mails (und andere Elementtypen) aus mehreren Postfächern in Microsoft Exchange Online sowie in lokalem Exchange zu löschen.
Hinweis: In Exchange Online wird das Cmdlet nach dem 1. Juli 2020 nicht mehr offiziell unterstützt. Die Alternative zu diesem sehr nützlichen Cmdlet ist die Verwendung von *ComplianceSearch-Cmdlets. Obwohl die Compliance-Suche hilfreich ist und Ihnen keine Warnung über die eingestellte Unterstützung ausgibt, ist sie weniger bequem zu verwenden und war nie für die Massenlöschung von Inhalten gedacht. Die ComplianceSearch-Cmdlets können nur 10 Elemente gleichzeitig löschen (im Vergleich zu 10 000, die im Fall von Search-Mailbox möglich sind). Erfahren Sie, wie Sie mit der neuen Version von Search-Mailbox Postfachinhalte in Exchange Online, Exchange 2016 und Exchange 2019 suchen und löschen können
Obwohl ich keine Lösung empfehlen kann, die zurückgezogen wurde, wirkt Search-Mailbox im Januar 2023 immer noch Wunder. Es ist schnell, einfach und kann problemlos Elemente in großen Mengen löschen. Wenn Sie nichts dagegen haben, Lösungen zu verwenden, die möglicherweise in der Zukunft nicht mehr funktionieren werden, kann Search-Mailbox für Sie immer noch von Nutzen sein.
Ich werde auch den Parameter-SearchQuery erläutern, der zum Verwalten von Elementumfängen und Abzielen auf bestimmte Inhalte verwendet wird.
Inhaltsverzeichnis
- Erforderliche Berechtigungen
- Suchen und Löschen von Inhalten aus einem Postfach
- Begrenzung des Umfangs gelöschter Elemente
- Beispiele für Bedingungsabfragen
- Löschen von E-Mails aus mehreren Postfächern
- Zusätzliche Schalter und Parameter
- Empfohlene Tools
Erforderliche Berechtigungen
Die erforderlichen Mindestberechtigungen zum Durchführen von Such- und Löschvorgängen sind:
Sie können sie über Exchange Admin Center, Berechtigungen, Administratorrollen (Exchange 2010: ECP, Rollen und Überwachung, Administratorrollen) zuweisen.
- Die Postfachsuche ist standardmäßig Teil der Rollengruppe Discoveryverwaltung.
- Postfachimport/-export ist nicht Teil einer der Standardrollengruppen, daher müssen Sie die Rolle entweder z. B. zur Discoveryverwaltung hinzufügen oder eine benutzerdefinierte Rollengruppe für Postfachsuche und Postfachimport/-export erstellen.
Um die Rollen einem Benutzer direkt über PowerShell zuzuweisen, führen Sie folgende Cmdlets aus:
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "<Benutzername oder Alias>"
New-ManagementRoleAssignment -Role "Mailbox Search" -User "<Benutzername oder Alias>"
Nachdem Sie die Berechtigungen zugewiesen haben, starten Sie die PowerShell-Konsole neu. Andernfalls wird Search-Mailbox nicht verfügbar sein.
Erfahren Sie mehr über rollenbasierte Zugriffskontrolle
Erfahren Sie, wie Sie mit PowerShell eine Remoteverbindung zu Office 365 herstellen
Suchen und Löschen von Inhalten aus einem Postfach
Bevor wir das Löschen von Elementen aus mehreren Postfächern besprechen, werfen wir einen Blick auf einen sehr einfachen Search-Mailbox-Befehl, mit dem Sie alle Inhalte aus einem einzigen Postfach löschen können:
Search-Mailbox -Identity "<Benutzername, Alias, DN, GUID, SMTPE-Mail oder UPN>" -DeleteContent
Tipp 1: Um die Bestätigungsaufforderung zu überspringen, verwenden Sie den Schalter -Force. Andernfalls werden Sie von PowerShell aufgefordert, zu bestätigen, dass Sie den Postfachinhalt löschen möchten:
Tipp 2: Um zu überprüfen, wie viele Daten Sie löschen werden, führen Sie zuerst den Befehl Search-Mailbox mit dem Schalter -EstimateResultOnly aus, anstatt sofort -DeleteContent zu verwenden (Sie können dieselben Informationen mit dem Schalter -LogOnly an ein ausgewähltes Postfach senden lassen, aber denken Sie daran, dass Sie ein Zielpostfach und einen Zielordner angeben müssen).
Begrenzung des Umfangs gelöschter Elemente
Mit diesen Parametern können Sie den Umfang des Such- und Löschvorgangs einschränken:
-SearchQuery
In Exchange 2010, 2013 und 2016 ist die Palette an abfragbaren Elementeigenschaften und Vorgängen, die Sie darauf ausführen können, ziemlich umfangreich.
Sie können alle in diesem Artikel aufgeführten Eigenschaften verwenden, und die Vorgänge, die Sie an ihnen ausführen können, werden durch die Verwendung von KQL (Keyword Query Language) ermöglicht. Konkrete Beispiele für Abfragen finden Sie im Abschnitt unten.
Hinweis: Exchange 2010 verwendet eine etwas weniger agile Abfragesprache. Erfahren Sie mehr in dieser Dokumentation von Microsoft.
-SearchDumpster
Standardmäßig wird der Ordner „Wiederherstellbare Elemente“ eines Postfachs durchsucht. Um ihn auszuschließen, fügen Sie -SearchDumpster:$false
zu Ihrem Skript hinzu.
-DoNotIncludeArchive
Schließt das Archiv eines bestimmten Postfachs aus (Schalter).
-SearchDumpsterOnly
Beschränkt die Suche und Löschung auf den Ordner „Wiederherstellbare Elemente“ eines bestimmten Postfachs (Schalter).
Beispiele für Bedingungsabfragen
Der folgende Abschnitt enthält Auszüge von Skripten, die auf Arten von Elementen abzielen, die meiner Meinung nach am nützlichsten sind. Wenn Sie eine Ergänzung zu dieser Liste sehen möchten, teilen Sie mir dies bitte in den Kommentaren mit.
Löschen von E-Mails mit #Schlüsselwort# im Betreff, die Sie von jemandem außerhalb Ihrer Domain erhalten haben
Search-Mailbox ... -SearchQuery 'subject:#Schlüsselwort# AND from<>#Ihre Domain#' -DeleteContent
Löschen von E-Mails und Kalenderereignissen, die vor einem bestimmten Datum empfangen wurden
Search-Mailbox ... -SearchQuery '(kind:email OR kind:meetings) AND received<#Datum im Format MM/TT/JJJJ#' -DeleteContent
Löschen von E-Mails mit einer Gesamtgröße der Anhänge von mehr als #Anzahl# Bytes
Search-Mailbox ... -SearchQuery 'hasattachment:true AND size>#Anzahl#' -DeleteContent
WICHTIG: Da das Größenattribut nur die Größe der gesamten Nachricht überprüft, kann diese Abfrage auf einen etwas größeren Umfang von Elementen mit Anhängen abzielen als nur auf diejenigen, deren Gesamtgröße der Anhänge #Anzahl# überschreitet.
Liste der Eigenschaften, die Sie mit Search-Mailbox abfragen können
Löschen von E-Mails aus mehreren Postfächern
Um den Such- und Löschprozess auf mehrere Postfächer auszuweiten, können Sie die Pipeline oder den foreach-Schleifenmechanismus von PowerShell verwenden.
Beispielsweise löschen die folgenden Befehle Inhalte, die mit #Ihre Abfrage# übereinstimmen, aus allen Postfächern, die in einer Organisation gefunden werden können:
Get-Mailbox | Search-Mailbox -SearchQuery '#Ihre Abfrage#' -DeleteContent
foreach ($mailbox in (get-mailbox)) {Search-Mailbox -id $mailbox -SearchQuery '#Ihre Abfrage#' -DeleteContent -Force}
HINWEIS: Bei Verwendung der foreach-Methode empfehle ich, den Befehl mit dem Schalter -Force anzuhängen. Andernfalls werden Sie die Inhaltslöschung für jedes einzelne Postfach bestätigen müssen.
Das Ergebnis der beiden obigen Befehle ist in Bezug auf gelöschte Inhalte identisch.
Wenn Sie dem Befehl ein Zielpostfach und einen Zielordner hinzufügen (siehe Zusätzliche Schalter und Parameter unten), wird die Get-Mailbox-Pipeline eine Suchzusammenfassung und eine Protokolldatei generieren, während die foreach-Schleife separate Suchzusammenfassungen und Protokolldateien für jedes Postfach generieren wird.
Beide Methoden ermöglichen das Einschränken des Umfangs von Postfächern, im Fall von welchen der Such- und Löschvorgang ausgeführt wird.
Mit der Get-Mailbox-Pipeline können Sie auch einfache Bereichsoperationen durchführen, z. B. die Ausgabe auf eine definierte Postfachdatenbank, Organisationseinheit, Domäne oder Postfächer eines bestimmten Typs beschränken. Weitere Details finden Sie in dieser Dokumentation von Microsoft.
Zusätzliche Schalter und Parameter
Nachdem Sie den Befehl Search-Mailbox mit dem Schalter -DeleteContent ausgeführt haben, wird die Ausgabe eine sehr einfache Zusammenfassung des Vorgangs enthalten (Beispiel in der nachstehenden Abbildung).
-EstimateResultOnly
Wie ich bereits erwähnt habe, können Sie diesen Schalter verwenden, um die obige Art von Zusammenfassung zu erhalten, bevor Sie den Schalter -DeleteContent verwenden. Beachten Sie, dass -EstimateResultOnly nicht zusammen mit -DeleteContent verwendet werden kann. Beispiel:
Search-Mailbox ... -SearchQuery '#Ihre Abfrage#' -EstimateResultOnly
-LogOnly
Standardmäßig sendet der Schalter -LogOnly genau dieselben grundlegenden Informationen an ein angegebenes Postfach wie -EstimateResultOnly. Dies liegt daran, dass die Standardprotokollebene auf „basic“ eingestellt ist. Sie können dies ändern, indem Sie die Protokollebene auf „full“ erhöhen.
Beachten Sie, dass Sie bei Verwendung des Schalters -LogOnly das Zielpostfach und den Zielordner definieren müssen und den Schalter -DeleteContent nicht verwenden können. Beispiel:
Search-Mailbox ... -SearchQuery '#Ihre Abfrage#' -LogOnly -LogLevel:full -TargetMailbox #Postfach-ID# -TargetFolder #Ordnername#
-LogLevel
Sie können auch den Parameter -LogLevel zusammen mit dem Schalter -DeleteContent verwenden, um detaillierte Informationen darüber zu erhalten, was gelöscht wurde. Wie oben müssen Sie die Protokollebene auf „full“ erhöhen und ein Zielpostfach und einen Zielordner angeben.
Nachdem der Such- und Löschvorgang erfolgreich war, finden Sie am angegebenen Ort eine E-Mail mit einer angehängten gezippten CSV-Datei, die eine Liste der gelöschten Elemente enthält.
Search-Mailbox ... -SearchQuery '#Ihre Abfrage#' -DeleteContent -LogLevel:full -TargetMailbox #Postfach-ID# -TargetFolder #Ordnername#
Sehr schöne Anleitung, mit der PowerShell bin ich noch nicht so warm geworden ;-)
Interessant wäre das löschen aller Mails im Ordner “Synchronisierungsprobleme” und darunter -recursive in allen Postfächern.
Vielen Dank