Exportieren von PST aus Exchange 2010 automatisieren

In diesem Artikel habe ich euch gezeigt, wie Ihr den Export von PST-Dateien aus Microsoft Exchange 2010 aktiviert, nun zeige ich euch, wie ihr das ganze automatisieren könnt.

Als erstes erstellen wir eine Datei namens “Export.ps1” mit folgendem Inhalt

Get-Mailbox -Database „Mailbox Database“ | Export-Mailbox -PSTFolderPath d:\PST

wobei ihr noch der Datenbanknamen anzupassen ist, und das Verzeichniss muss noch auf eures geändert werden. Mit diesem Befehl werden alle Mailboxen in ihre entsprechende PST Datei exportiert, also eine komplette Sicherung. Speichert diese Datei am besten in den PST Ordner.

Erstellt in diesem eine BAT oder CMD Datei mit folgendem Inhalt

powershell -PSConsoleFile „C:\Program Files\Microsoft\Exchange Server\V14\Bin\exshell.psc1“ -command D:\pst\export.ps1 > D:\pst\pstbackup-log.txt

Hier ist darauf zu achten das der Pfad zur “exdhell.psc1” angepasst wird, genauso wie zu unserer “export.ps1” und das Log muss noch wo abgelegt werden. Unsere erstellt „BAT oder CMD Datei kann somit als Task eingerichtet werden. Somit haben wir eine komplette Exchange 2010 Sicherung

lg michael

27 comments to Exportieren von PST aus Exchange 2010 automatisieren

  • Markus

    Hallo, vielen Dank für diesen Artikel – vor allem das problem mit dem Export-Mailbox cmdlet und ADSIEdit. Hätte die Suche nach einem vernünftigen EXMERGE Ersatz schon fast aufgegeben. Hat mir einiges an Zeit erspart. danke und lg, Markus

  • @markus: freut mich das ich dir helfen konnte. lg michael

  • basti

    Hallo,

    Ich bin auch gerade dabei die Mailboxen automatisiert exportieren zu lassen. Allerdings stosse ich da auf eine zeitliche Problematik. Der Export ist SEHR LANGSAM (teilweise nur 2MB/min), zumal wenn gleichzeitig Mailboxen exportiert werden. Das führt dazu, dass der taegliche Exportjob sich selbst überschneidet. Gibt es irgendeine bekannte Moeglichkeit das zu beschleunigen?

  • Hallo Basti,
    also der Export an sich ist nicht langsam, ich schaffe 47GB in 45 Minuten, also 1GB/min. Vermute hier eher ein anderes Problem. Wohin exportierst du deine PST Files? Hast du einen Antivirus aktiviert? Wie aktuell ist die Hardware?

  • basti

    Hallo seidl,

    wow, erstmal danke fuer das schnelle Feedback. Und auch die Aussicht auf eine Lösung :)
    Zu Deinen Fragen, da das noch ein System in Testphase ist, ist da auch kein Antivirus drauf.
    Hardware (Quelle/Ziel): 2x E5520 a 2,27Ghz und 24GB RAM, Storage ist ein RAID 6.
    Das Backupziel ist eine SMB Share auf einem anderen Rechner mit 1GBit Anbindung. Weder Quelle noch Ziel zeigen im Performacemonitor irgendeine Auslastung von CPU, Netzwerk oder Disk I/O.
    Daher hatte ich auch die Vermutung, daß es eine Exchangeconfig-Sache sein muesste.
    Weitere Ideen wo ich mal gucken koennte/sollte?

  • Hallo Basti, ich geb mein bestes :-)
    Las mal den Share weg, und probier mal das Powershell Kommando „Get-Mailbox -Database “Mailbox Database“ | Export-Mailbox -PSTFolderPath d:\PST“ in der Powershell auszuführen, und auf eine lokale Platte zu sichern wenn möglich. Kann auch das selbe laufwerk sein, wo der Exchange Store liegt, ist bei mir auch so. Somit können wir den Fehler eingrenzen. lg michael

  • basti

    Hallo Michael,

    sehr loeblich 😉 Also, da ich bereits das SP1 benutze, gibt es „nur“ noch das New-MailboxExportRequest cmdlet. Und hier kann man angeblich nur ein UNC Pfad angeben. Ich hatte schonmal versucht die lokale Platte als \\D:\… anzugeben. Das wollte er aber nicht und daher bin ich zu einer richigen Share gewechselt.
    Ich werde mal versuchen, noch einen anderen Weg fuer eine lokale Platte zu nutzen. Vielleicht bist Du darueber auch schon mal gestolpert :)
    Ich probiere ansonsten erstmal, und meld mich bei einer Statusaenderung.

    Besten Gruss
    Basti

  • Hallo Basti,
    oh, ok, SP1 hab ich noch nicht, soll aber heute folgen, vielleicht kann ich dann mehr sagen.

    lg michael

  • basti

    Hallo Michael,

    ich weiss zwar nicht wie weit Du mit Deinem SP1 bist :) Aber ich wollte mal die ersten Erkenntnisse mitteilen.
    Zunächst einmal scheint es so zu sein, dass sowohl für eine DAG als auch für den Export der PST Files, der Replikationsservice genutzt wird.
    Dieser wiederum scheint besonders gern in superkleinen writes bzw. reads zu syncen. Das führt ganz schnell dazu daß die Platte extremst langsam ist. Wenn ich ein Performancemonitor mir anschaue, sehe ich auf dem Ziel je nach Disksubsystem (also auf verschiedenen Zielen) zwischen 100 und 600 Disk Writes/Sec. Also Vollauslastung der jeweiligen IOPS wie es ausschaut. Leider habe ich noch keinen Weg gefunden ihm genau diese sehr „kleineliche Art“ abzugewoehnen. Ich melde mich wenn ich mehr herausgefunden habe.

    lg Basti

  • Hallo Basti, hab gestern noch das SP1 installiert, bin grade dabei mir den Export anzusehen, werde hoffentlich morgen noch was dazu sagen können. lg

  • Robert F

    Can you tell me how i could create a file that will run multiple jobs like this?
    i am trying to something like this:
    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-4-5.pst -startdate 4/1/08 -enddate 5/1/08

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-5-6.pst -startdate 5/1/08 -enddate 6/1/08

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-6-7.pst -startdate 6/1/08 -enddate 7/1/08

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-7-8.pst -startdate 6/1/08 -enddate 8/1/08
    Thank you,
    Robert

  • Robert F

    Hi Michael,
    I modified this for exchange 2007 and try to script multiple jobs like i showed in my former post.
    looks like it is working but it is asking for a conformation. Does that timeout and take the default „Y“?

    here is my BAT file for exchange 2007:
    C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile „C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1“ -command e:\compliance2008\export.ps1 >pstexport-log.txt
    Thanks!
    Robert

  • Hi Robert,
    try to do the command without the -PSconsoleFile switch?

  • Robert F

    Hi Michael,

    I was actually able to do this by adding „-Confirm $false“ to every job.

    like this:

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-4-5.pst -startdate 4/1/08 -enddate 5/1/08 -Confirm $false

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-5-6.pst -startdate 5/1/08 -enddate 6/1/08 -Confirm $false

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-6-7.pst -startdate 6/1/08 -enddate 7/1/08 -Confirm $false

    export-mailbox -identity compliance2008 -PSTFolder e:\compliance2008\2008-7-8.pst -startdate 6/1/08 -enddate 8/1/08 -Confirm $false

    Thank you! you helped me in the right direction and now I can have this job run whole weekend! (170GB journaling mailbox)

  • Hi Robert, that had do be my second try :-)
    great to here you solved that

  • Hassan

    Many Thanks,

    Couldn’t find a solution anywhere to the exchange 2010 mailbox export problem. Luckily I found in German thanks to Google translate!

    Peace

  • Hi Hassan,
    glad to help you with that.
    regards

  • Stefan

    Ist das wahr,
    der Export funktioniert nur auf einem 32 Bit System?
    wenn ich die Ausführung starte bekomme ich die Folgende Meldung ins Log geschrieben.

    Sie arbeiten auf einem 64-Bit-Computer. Zum Exportieren in eine oder Importiere
    n aus einer PST-Datei müssen Sie auf einem 32-Bit-Computer arbeiten, auf dem Ou
    tlook 2003 SP2 oder höher installiert ist.
    Bei C:\ExchangeSicherung\Export.ps1:1 Zeichen:1
    + <<<< Get-Mailbox -Database "Mailbox Database" | Export-Mailbox -PSTFolderPat
    h C:\ExchangeSicherung\PST
    + CategoryInfo : InvalidOperation: (:) [], RecipientTaskException
    + FullyQualifiedErrorId : C0AAF806

    Das kann ich nicht glauben, was mache ich falsch?

    Gruß
    Stefan

  • tegee

    super klasse Script und funktioniert bei mir auch richtig schnell
    vielleicht kannst du mir sagen, wie ich es hinbekomme, dass ich vor dem .pst noch das aktuelle Tagesdatum bekomme, also
    Ziel ist es die letzten 14 Tage zu „sammeln“ und alles was älter als 14 Tage ist soll gelöscht werden

  • Hi, ich glaube das ging erst ab 2010 SP1, da hier die CMDlets aktualisiert wurden.

    Michael

  • tegee

    ich habe es jetzt so gelöst:

    $date=Get-Date -Format dddd

    (Get-Mailbox) | foreach {New-MailboxExportRequest -Mailbox $_.alias -FilePath „\\Server\sicherung\pst\$date – $_.pst“}

    die Variable $date gibt den aktuellen Tag aus (Montag, Dienstag, Mittwoch, etc.)
    und schreibt sie vor den Postfachnamen (Mittwoch – mein_Name_ist_Hase.pst), so dass nach genau einer Woche alle pst Dateien wieder überschrieben werden

    es gibt natürlich noch andere Formatierungen für Get-Date, siehe hier:
    http://technet.microsoft.com/en-us/library/hh849887.aspx

    hätte ich genug Platz, dann würde ich Get-Date -Format dd wählen, dann wird der aktuelle Tag des Monats reingeschrieben, also z.B. für den 13.11.2013 würde dann 13 – mein_Name_ist_Hase.pst da stehen

    somit hätte man eine Sicherung von maximal 31 Tagen

  • […] zum normalen Exchange Backup, sicher ich mittels Powershell Script alle 6 Stunden meine Postfächer als PST Dateien, damit kann auch einzelne Mails, Kontakte oder […]

  • […] zum normalen Exchange Backup, sicher ich mittels Powershell Script alle 6 Stunden meine Postfächer als PST Dateien, damit kann auch einzelne Mails, Kontakte oder […]

Leave a Reply

  

  

  

*