Website-Suche

Suchen und löschen Sie E-Mails aus Benutzerpostfächern auf Exchange Server (Microsoft 365) mit PowerShell


In Exchange Server können Sie die PowerShell-Cmdlets Search-Mailbox oder New-ComplianceSearch (verfügbar in neueren Versionen von Exchange Server und Exchange Online/Microsoft 365) verwenden, um nach und zu suchen E-Mail-Elemente aus Benutzerpostfächern löschen. Beispielsweise hat ein Benutzer versehentlich private Daten an Kollegen in der Organisation gesendet und hatte keine Zeit, sich die Nachricht in Outlook abzurufen. Die Abteilung für Informationssicherheit verlangt, dass ein Exchange-Administrator diese private E-Mail aus allen Benutzerpostfächern in Ihrer Exchange-Organisation/Ihrem Exchange-Mandanten löscht.

Der Artikel gilt für lokale Exchange Server 2019/2016/2013 und 2010 sowie für cloudbasiertes Exchange Online (Microsoft 365).

Zum Durchsuchen von Exchange-Postfächern sind Berechtigungen erforderlich

Dem Administratorkonto, das nach Postfachelementen sucht und diese löscht, müssen folgende Rollen zugewiesen werden:

  • Postfach-Import-Export

  • Postfachsuche

Sie können die Rollen per EAC oder PowerShell zuweisen. Stellen Sie über PowerShell eine Verbindung zu Ihrem lokalen Exchange Server her und führen Sie die folgenden Befehle aus:

New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Import Export"
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Search”

In Exchange Online müssen Sie die folgenden Rollen zuweisen:

Add-RoleGroupMember "Discovery Management" -member max@a-d.site
New-RoleGroup "Mailbox Import-Export Management" -Roles "Mailbox Import Export"
Add-RoleGroupMember "Mailbox Import-Export Management" -Member max@a-d.site

Fügen Sie Ihr Konto der Gruppe eDiscovery-Administratoren im Microsoft 365 Compliance Center hinzu

Tipp. Sie können das Exchange Online PowerShell v2 (EXO V2)-Modul verwenden, um eine Verbindung zu Exchange Online herzustellen.

Nachdem die Rollen zugewiesen wurden, starten Sie die PowerShell-Sitzung neu.

Search-Mailbox: Suchen und löschen Sie Nachrichten aus Exchange-Benutzerpostfächern

Sie können die Weboberfläche des Exchange Admin Center (EAC) oder das PowerShell-Cmdlet Search-Mailbox verwenden, um E-Mail-Elemente in Benutzerpostfächern zu durchsuchen. Mit diesem Befehl können Sie nach bestimmten Kriterien nach E-Mails in Postfächern suchen, die gefundenen Elemente in ein anderes Postfach kopieren oder entfernen.

Um das Postfach eines Benutzers nach E-Mails mit einem bestimmten Betreff zu durchsuchen, führen Sie den folgenden Befehl aus:

Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Annual Report"'

Um alle Postfächer in der Exchange-Organisation zu durchsuchen, verwenden Sie den folgenden Befehl:

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"'

Bei Verwendung des Search-Mailbox-Cmdlets in Exchange Online (Microsoft 365) wird eine Warnung angezeigt:

WARNING:  On July 1, 2020, the Search-Mailbox cmdlet is being retired and Microsoft Support will no longer provide assistance.  See https://go.microsoft.com/fwlink/?linkid=2113221 to learn more. WARNING: The Search-Mailbox cmdlet returns up to 10000 results per mailbox if a search query is specified. To return more than 10000 results, use the New-MailboxSearch cmdlet or the In-Place eDiscovery & Hold console in the Exchange Administration Center.

Microsoft empfiehlt die Verwendung der leistungsstärkeren

New-ComplianceSearch

Und

New-ComplianceSearchAction

Cmdlets für die Postfachsuche (siehe unten).

Um die Suchergebnisse in ein bestimmtes Postfach und einen bestimmten Ordner zu kopieren, verwenden Sie die Parameter TargetMailbox oder TargetFolder. Dadurch können Sie die gefundenen E-Mails manuell in Ihrem Outlook anzeigen, nachdem die Suche abgeschlossen ist. Angenommen, Sie müssen in der Liste der Postfächer (angegeben in der Datei „users.txt“) nach E-Mail-Nachrichten suchen und die gefundenen Elemente in den Ordner im jeweiligen Postfach kopieren:

get-content users.txt | Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"' -TargetMailbox sec_dept -TargetFolder "ExchSearchResult”

Die Option -LogOnly -LogLevel Full bedeutet, dass Suchergebnisse nur geschätzt werden dürfen, ohne Elemente in ein Zielpostfach zu kopieren oder die Nachrichten zu löschen. Wenn dieses Argument verwendet wird, wird ein Bericht mit den Suchergebnissen an das angegebene Zielpostfach gesendet. Ein Bericht ist eine archivierte CSV-Datei, die Postfächer auflistet, die den Suchkriterien entsprechen.

Bitte beachten Sie, dass der empfangene Bericht die E-Mail-Nachricht Lesestatus (

Read: True/False

).

Sie können die Suchergebnisse mithilfe des Parameters -EstimateResultOnly schätzen. Bitte beachten Sie, dass Sie bei Verwendung dieser Option kein Zielpostfach oder Zielordner angeben müssen.

Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:"report"' -EstimateResultOnly|select Identity,ResultItemsCount,ResultItemsSize| Where-Object ResultItemsCount -gt 0

Um die gefundenen E-Mail-Elemente zu löschen, verwenden Sie den Parameter -DeleteContent. Fügen Sie den Parameter -Force hinzu, um Bestätigungsaufforderungen zu überspringen

Löschen wir alle E-Mail-Nachrichten des Absenders k.peterson@a-d.site in allen Postfächern auf dem jeweiligen Exchange-Server:

Get-Mailbox -Server berl-ex1 -ResultSize unlimited | Search-Mailbox -SearchQuery 'from:"k.peterson@a-d.site"' -DeleteContent -Force

Bevor Sie E-Mail-Elemente mit dem Parameter -DeleteContent aus Postfächern entfernen, empfehlen wir Ihnen dringend, gefundene E-Mails mit dem anzuzeigen

-EstimateResultOnly

oder

-LogOnly

Argumente.

Um nur gelöschte Elemente zu durchsuchen, fügen Sie den Parameter -SearchDumpsterOnly hinzu (um die Suche nach gelöschten Elementen auszuschließen, fügen Sie hinzu

-SearchDumpster:$false

Streit). Wenn Sie ein Archivpostfach aus dem Suchergebnis ausschließen müssen, verwenden Sie den Parameter -DoNotIncludeArchive.

Das Search-Mailbox-Cmdlet weist eine erhebliche Einschränkung auf: Es kann nur 10.000 Elemente zurückgeben. Wenn dieser Grenzwert überschritten wird, wird der Fehler zurückgegeben:

Sending data to a remote command failed with the following error message: The total data received from the remote client exceeded allowed maximum. Allowed maximum is 524288000.

Um weitere Elemente zu löschen, müssen Sie das Cmdlet Search-Mailbox mehrmals ausführen oder die Postfächer nach Postfachdatenbanken oder Exchange-Servern in Gruppen aufteilen.

Get-Mailbox -Database berl-ex1 | Search-Mailbox -SearchQuery 'from:spam@spambot.org' -DeleteContent -Force

Ein weiteres Problem des Search-Mailbox-Cmdlets ist seine schlechte Leistung. Bei einem großen Unternehmen kann die Suche mehrere Tage dauern. In modernen Versionen von Exchange Server und Microsoft 365 verwenden Sie am besten das Cmdlet New-ComplianceSearch (siehe unten), um nach E-Mails zu suchen.

Beispiele für die Stichwortsuche für Exchange-Postfächer

Schauen wir uns Beispiele für Suchanfragen an, um E-Mail-Elemente mithilfe des Parameters SearchQuery zu finden. Der SearchQuery-Parameter verarbeitet Abfragen im KQL-Format (Keyword Query Language) https://docs.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-Language-kql -Syntax-Referenz.

So finden und entfernen Sie alle E-Mails, die das Schlüsselwort „Secret“ im Betreff enthalten, von allen Benutzern, die nicht zu Ihrer Domain gehören:

Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Secret" and from<>”a-d.site”' -DeleteContent

Mit den logischen Operatoren OR und AND können Sie komplexere E-Mail-Suchbedingungen kombinieren.

Suchen und löschen Sie alle E-Mails mit Anhängen, die größer als 20 MB sind:

Search-Mailbox -Identity k.peterson -SearchQuery 'hasattachment:true AND Size >20971520' -DeleteContent

Tipp. Die Größe der E-Mail-Elemente wird in Bytes angegeben und es wird die Größe des gesamten E-Mail-Elements gezählt, nicht nur der Anhänge. Sie können die Größe auch in Megabyte angeben. In diesem Fall wird die folgende Syntax verwendet:

-SearchQuery {Size -gt 30MB}

Sie können gleichzeitig nach dem Text im Betreff und im Text der E-Mail suchen. Lassen Sie uns beispielsweise alle Nachrichten suchen und löschen, die „Neujahr“ im Betreff oder „Brandy“ im E-Mail-Text enthalten.

Search-Mailbox k.peterson -SearchQuery {Subject:"RE:New Year" OR body:"brandy"} -DeleteContent -Force

Mit dem Argument Art können Sie die Postfächer nach bestimmten Elementen durchsuchen. Zum Beispiel:

Treffen:

-SearchQuery "Kind:meetings"

Kontakte:

-SearchQuery "Kind:contacts"

Oder andere Outlook-Elemente:

  • Email

  • Treffen

  • Aufgaben

  • Anmerkungen

  • Dokumente

  • Zeitschriften

  • Kontakte

  • ICH BIN

Durchsuchen von E-Mails nach einem bestimmten Empfänger und Absender:

-SearchQuery 'from:"ceo@a-d.site" AND to:"support-team@a-d.site"'
  • E-Mails mit Anhängen:

    -SearchQuery 'hasattachment:true'
  • E-Mails, die gelesen wurden:

    -SearchQuery 'isread:false'
  • E-Mails nach Größe durchsuchen:

    -SearchQuery 'size>300000'

Sie können nach Nachrichten mit der jeweiligen Datei als Anhang suchen:

-SearchQuery 'attachment:"annual_report2021.pdf"'

Oder nach Dateityp:

-SearchQuery 'attachment -like:"*.docx"'

Sie können nach Sende-/Empfangsdatum suchen, es gibt jedoch mehrere Nuancen. Wenn Sie ein Datum als Suchkriterium verwenden, müssen Sie die regionalen Einstellungen Ihres Exchange Servers berücksichtigen. Beispielsweise kann 22. Februar 2022 auf eine der folgenden Arten angegeben werden:

  • 22.02.2022

  • 22.02.2022

  • 22.02.2022

  • 22. Februar 2022

Und wenn Sie den Fehler sehen „

The KQL parser threw an exception…

Wenn Sie den Befehl „Search-Mailbox“ ausführen, bedeutet dies, dass Sie das falsche Datumsformat verwenden.

Um nach E-Mails zu suchen, die an einem bestimmten Tag gesendet wurden, verwenden Sie diese Abfrage:

-SearchQuery sent:02/22/2022

Wenn Sie den Datumsbereich angeben müssen (Sie suchen nach E-Mail-Elementen, die innerhalb eines bestimmten Zeitraums eingegangen sind):

-SearchQuery {Received:01/04/2022..02/20/2022}

Hier ist ein weiteres Beispiel. Suchen wir nach E-Mails, die nach dem 9. Mai eingegangen sind:

-SearchQuery {Received:> $('05/09/2021')}

New-ComplianceSearch: Wie suche und lösche ich E-Mails in Exchange?

In Exchange 2016/2019 und Exchange Online (Microsoft 365) können Sie die neue Möglichkeit nutzen, E-Mail-Nachrichten in Benutzerpostfächern schnell zu suchen und zu löschen, indem Sie New-ComplianceSearch und New-ComplianceSearchAction< verwenden Cmdlets.

Microsoft empfiehlt die Verwendung dieser Cmdlets zum Durchsuchen von E-Mails in Exchange anstelle des veralteten Befehls Search-Mailbox.

Stellen Sie eine Verbindung zum M365 Security & Compliance Center her:

Connect-IPPSSession

Versuchen wir, Postfächer nach E-Mails mit einem bestimmten Betreff, Absender und Datum zu durchsuchen.

$Sender = "max@a-d.site"
$StartTime = "02/20/2022"
$EndTime = "02/22/2021"
$Subject = "report2022"

Führen Sie Folgendes aus, um eine E-Mail-Suchaufgabe basierend auf den angegebenen Kriterien zu erstellen:

New-ComplianceSearch -Name ContentSearch_Report2022 -ExchangeLocation all -ContentMatchQuery "sent>=$($StartTime) AND sent<=$($EndTime) AND sender:$($Sender) AND subject:$($Subject)"

Sie können Suchkriterien im Attribut -ContentMatchQuery angeben, ähnlich den -SearchQuery-Optionen im Cmdlet Search-Mailbox.

An dieser Stelle tritt häufig ein Fehler auf:

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.

Stellen Sie sicher, dass Sie alle Exchange-Rollen wie oben beschrieben zugewiesen haben.

Schließen Sie die aktuelle PowerShell-Sitzung und stellen Sie die Verbindung wieder her:

Get-PSSession | Remove-PSSession

So führen Sie diesen Job aus:

Start-ComplianceSearch -Identity ContentSearch_Report2022

Sie müssen warten, bis es erledigt ist. Den aktuellen Suchstatus können Sie so abrufen:

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

So drucken Sie Suchergebnisse im Vorschaumodus auf der Konsole aus:

New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Preview
(Get-ComplianceSearchAction ContentSearch_Report2022| Select-Object -ExpandProperty Results).Split(";")

Wenn Sie alle gefundenen E-Mail-Elemente aus Benutzerpostfächern entfernen möchten, verwenden Sie die Option -Purge (verfügbar in Exchange Online):

New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Purge -PurgeType SoftDelete

Wenn Sie gelöschte E-Mails für Benutzer wiederherstellbar machen möchten, verwenden Sie die

-PurgeType SoftDelete

Möglichkeit. Angeben

-PurgeType HardDelete

um Elemente vollständig aus Postfächern zu entfernen.

Jetzt können Sie die Suchergebnisse löschen:

Remove-ComplianceSearch -Identity ContentSearch_Report2022

Verwandte Artikel