Weisheiten - der Netz-Weise Blog
Emails in Exchange per Powershell suchen und löschen
Manchmal steht man vor der Aufgabe, das einzelne mails aus einem Benutzerpostfach gelöscht werden sollen, z.B. weil Sie Schadcode enthalten, oder auch, weil das Postfach geleert werden soll. Mit Hilfe der Exchange-eigenen Cmdlet Search-Mailbox geht das sehr einfach.
Starten Sie die Exchange Management-Shell. Eine Anleitung der Installation der Shell finden Sie im Artikel "Exchange Cmdlet in Powershell nutzen". Achten Sie darauf, dass Sie das Cmdlet "Search-Mailbox" nicht sehen, solange Sie nicht Mitglieder der Rolle "Mailbox Import Export" sind - das gilt sogar dann, wenn Sie als Organisationsadministrator angemeldet sind. Alternativ können Sie das Problem auch umgehen, indem Sie die Exchange-Snapins direkt importieren.
Anschliessend rufen Sie das Cmdlet Search-Mailbox auf. Der Parameter Identity gibt dabei an, welche Mailbox(en) Sie suchen. Alternativ können Sie die Mailboxen auch per Pipeline an Search-Mailbox übergeben. Mit Hilfe des Parameters -Searchquery geben Sie an, welche Nachrichten gesucht werden. Das Cmdlet verwendet für die Definition der Suchabfragen die KQL (Keyword Query Language). Ein einfaches Beispiel für eine Suche nach dem Begriff "Verrat" in allen mails aller mailboxen sieht so aus:
Get-Mailbox | Search-Mailbox -SearchQuery 'Verrat' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Sie müssen für die Suche eine Zielmailbox und einen Zielordner in dieser Mailbox angeben, da das Cmdlet die mails natürlich nicht direkt anzeigen kann.
Sie können auch mehrere Suchbegriffe miteinander verknüpfen. Dafür stellt Ihnen die KQL die drei Operatoren AND, OR und NOT zur Verfügung:
Get-Mailbox | Search-Mailbox -SearchQuery 'Verrat OR SPION OR BOMBE' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Sie können auch mehrer Bedingungen durch Klammern gruppieren:
Get-Mailbox | Search-Mailbox -SearchQuery 'Verrat AND (SPION OR BOMBE)' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Die KQL unterstützt mit dem Stichwort NEAR(n) auch die Suche nach Wörtern, die nahe beieinander stehen, wobei (n) angibt, wie viele Wörter zwischen den beiden Suchwörtern stehen dürfen. Im folgenden Beispiel werden alle Kombinationen von Verrat mit Spion oder Bombe gesucht, die nicht mehr als 2 Zeichen voneinander entfernt stehen.
Get-Mailbox | Search-Mailbox -SearchQuery 'Verrat NEAR(2) (SPION OR BOMBE)' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Sie können auch Felder in der mail angeben, wie "Recipients:", "Subject:" oder "Body:".
Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:Verrat' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Eine Suche nach allen Mails, die größer als 5 MB sind, verwendet das Feld "Size:"
Get-Mailbox | Search-Mailbox -SearchQuery 'Size:>10MB' -TargetMailbox 'Administrator' -TargetFolder 'NSA'
Sie suchen gelöschte Mails? Auch kein Problem mit den Schlüsselwörtern -SearchDumpster und -SearchDumpsterOnly.
Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:Verrat' -TargetMailbox 'Administrator' -TargetFolder 'NSA' -SearchDumpsterOnly
Eine vollständige Auflistung der Schlüsselwörter, die in den Suchindex einfliessen, finden Sie unter "Message Properties indexed by Exchange Search". Eine Auflistung der Suchoperatoren finden Sie in der KQL-Referenz.
Um die Daten nicht in eine andere Mailbox zu kopieren, sondern zu löschen, können Sie den Parameter -DeleteContent nutzen. Um Beispielsweise den Inhalt sämtlicher Mailboxen zu leeren (z.B. für Testumgebungen), können Sie folgendes Kommando nutzen:
Get-Mailbox -Identity Student* | Search-Mailbox -DeleteContent -Force
Get-Mailbox -Identity Student* sucht alle Postfächer, die mit Student beginnen, und der Parameter -Force hinter -DeleteContent sorgt dafür, dass das Cmdlet nicht bei jeder Mailbox explizit fragt, ob die Daten wirklich gelöscht werden sollen.
Eine Alternative zu Search-Mailbox stellt New-MailboxSearch dar. New-Mailboxsearch kann, im Gegensatz zu Search-Mailbox, auch Reports über Mailboxen erstellen. Mehr Informationen finden Sie im Blog "Just a UC Guy".
Links
KQL (Keyword Query Language)
Message Properties indexed by Exchange Search
Kommentare