Postfächer aus Microsoft 365 in eine PST-Datei exportieren mit PowerShell


    Tags: , ,

    Mailbox aus Exchange in eine PST-Datei exportierenIn verschiedenen Szenarien ist es in Exchange sowohl on-prem als auch online notwendig, Postfächer in einer PST-Datei zu speichern. Dafür gibt es zwar diverse Tools von Dritt­anbietern sowie Backup-Software, die sich für diese Situationen ebenfalls eignen. Für eine gelegentliche Anwendung lohnen sich die Kosten dafür jedoch nicht.

    In einem lokalen Exchange gab und gibt es bisher immer die Möglichkeit, Postfächer mittels PowerShell zu importieren und exportieren (siehe dazu: Exchange Server: Postfächer exportieren und importieren im PST-Format).

    Diese Option gibt es in Exchange Online leider nicht, hier soll man stattdessen das Microsoft Compliance Center (früher "Security und Compliance") nutzen (siehe dazu: Postfächer aus Office 365 in PST-Dateien exportieren).

    Eine Automatisierung des Vorgangs ist über die Web-Oberfläche jedoch nicht möglich, aber dafür lässt sich der gleiche Workflow in PowerShell abbilden. Im nachfolgenden Script zeige ich anhand meines Postfaches, wie ein solcher Export aussehen könnte.

    Compliance Center über PowerShell ansprechen

    Dabei bediene ich mich zum einen der Cmdlets des Microsoft Compliance Centers als auch der eDiscovery Export Tools, welche sich ebenfalls über PowerShell steuern lassen.

    Voraussetzung dafür ist das Exchange-Online-Modul möglichst in der neuesten Fassung (aktuell ist dies die V3) mit einem Connect zum Microsoft Compliance Center.

    Hinweis: Wenn Sie das Script automatisch ausführen möchten, dann empfiehlt es sich, die Verbindung mit einer App-Registrierung (App-ID und Zertifikats­finger­abdruck) zu konfigurieren. Andernfalls müssen Sie sich bei jeder Script-Ausführung im Microsoft-Tenant anmelden.

    Zuerst stellt man die Verbindung zum Microsoft Compliance Center via Benutzerkonto her:

    Import-Module ExchangeOnlineManagement
    Connect-IPPSSession

    Verbindung mit Microsoft 365 via PowerShell herstellen

    Compliance-Suche ausführen

    Nun folgen im Prinzip die gleichen Schritte wie bei einem Export über die GUI, nämlich ein Compliance Search und danach eine Compliance­Search­Action:

    New-ComplianceSearch "Roland-Export" `
    -ExchangeLocation <Postfach-für-Export> |
    Start-ComplianceSearch

    New-ComplianceSearchAction -SearchName "Roland-Export" `
    -Export -Format Fxstream

    "Roland-Export" steht hier als Platzhalter für den Namen der Suche, damit diese in den nächsten Schritten wiedergefunden werden kann.

    Mit

    Get-ComplianceSearchAction "Roland-Export_Export" -IncludeCredential |
    Format-List

    kann man nun den Status der vorausgegangenen Befehle kontrollieren. Das Suffix "_Export" wird von New-ComplianceSearchAction automatisch an den SearchName angehängt.

    Hinweis: Mit einem Get-ComplianceSearchAction kann man alle Suchaktionen einsehen.

    Status des Exportvorgangs mit Get-ComplianceSearchAction abfragen

    Wichtig ist in der Ausgabe dieses Befehls das Attribut Status. Dieses muss auf Completed stehen, da ansonsten die Search-Aktion noch nicht fertig ist und ein Export nicht funktionieren würde. Zudem benötigt man für den Export die Container-URL und das SAS-Token.

    Export-Tool starten

    Im nächsten Schritt nutzen wir das eDiscovery Export-Tool. Dieses legt sich automatisch im Benutzerprofil eines Users ab, sobald er einen Export via GUI durchführt.

    Das Export-Tool erstellt nun unter dem Zielverzeichnis einen Exportordner und befüllt diesen.

    Die vom Export-Tool generierten Log-Dateien und die PST finden sich im Exchange-Ordner

    Ein Vorteil gegenüber der Exportmethode von Exchange on-prem ist, dass diese hier wesentlich mehr Logs schreibt. Jede Aktion wie zum Beispiel Fehler, defekte Elemente etc. kann hier in den Protokollen nachvollzogen werden. Die eigentliche PST-Datei findet sich im Ordner Exchange.

    Über den Task-Manager ist zu sehen, wie der Client im Hintergrund den Export abarbeitet.

    Der Exportprozess lässt sich im Task-Manager beobachten.

    Nachdem der Export abgeschlossen ist, sollte man nicht vergessen, die Search Action im Microsoft Compliance Center wieder zu löschen. Dies kann man ebenfalls via PowerShell tun:

    Remove-ComplianceSearchAction "Roland-Export_Export"

    Remove-ComplianceSearch "Roland-Export"

    Nicht mehr benötigte ComplianceSearchAction mittels PowerShell löschen

    Zusammenfassung

    Exchange Online bietet zwar kein Cmdlet analog zu jenem von Exchange Server, um Postfächer in eine PST-Datei zu exportieren. Dafür kann man aber den Export über die GUI des Compliance Center in PowerShell nachvollziehen und auf diese Weise automatisieren.

    Soll der Export ohne Benutzereingriff erfolgen, dann kann man das Script über eine App-Registrierung an Microsoft 365 anmelden.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Roland Eich

    Roland Eich ist gelernter Fach­infor­matiker für System­inte­gration und in der IT seit über 14 Jahren zu Hause. Roland deckt auf­grund seiner Erfah­rungen ein breites Spek­trum der Microsoft-Produkt­palette ab.
    Zudem besitzt er ver­schiedene Zertifi­zierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).

    // Kontakt: E-Mail //

    Verwandte Beiträge

    Weitere Links

    1 Kommentar

    Hallo,

    eine tolle Idee für dieses Problem eine Lösung anzubieten :-). Ich habe mehrere (Verständnis-)Fragen:
    - Wo gebe ich das Postfach an, das ich in eine PST-Datei exportieren möchte?

    - Die "New-ComplianceSearchAction" scheitert mit dem dem Fehler "A parameter cannot be found that matches parameter name 'Export'." Ist die Syntax korrekt?

    - Wo gebe ich den Ort an, in dem ich die PST-Datei speichern möchte?

    Ich freue mich auf Ihre Antworten