Export PST bei Exchange 2010 SP1

Wie hier schon beschrieben, hat sich mit dem Servicepack 1 für Microsoft Exchange Server 2010 einiges geändert, unter anderem auch der PST Export. Deshalb dieser Artikel, da der Vorgänger doch sehr beliebt bei euch war, gibt es natürlich einen Fortsetzung. Diesmal mit einem Umfangreichen Einblick in das neu CMDlet. Ich zeige den Export eines einzelnen Postfaches, wir ihr alle vorhanden Postfächer exportieren könnt und wir ihr das ganz als Task automatisieren könnt. Viel Spaß

Fangen wir mal klein an,falls ihr einen neuen Exchange 2010 SP1 habt, müsst ihr dem Admin, oder wem auch immer, die Rechte zum exportieren und importieren geben. Da auch das exportieren auf die lokale HDD nciht mehr möglich ist,oder sagen wir mal, nicht mehr direkt möglich ist, müssen wir dem Share die nötigen Zugriffsrechte geben.

Rechte vergeben

Mit Exchange 2010 SP1 können wir beim Export nur noch einen UNC Share benutzen, dieser kann aber auch auf die lokale Platte zeigen und einfach “\\localhost\d$\pst” lauten. Sollte es aber beim Export Probleme geben, muss das Verzeichnis Lese/Schreib Rechte für die Gruppe “Exchange Trusted Subsystem” besitzen.

Zusätzlich müssen wir dem Admin User der den Export durchführt auch die Rechte zum exportieren geben, dazu starten wir die Powershell am Exchange Server und setzen folgendes Kommando ab
New-ManagementRoleAssignment –Role “Mailbox Import Export” –User Springfield\Administrator

New-ManagmentRoleAssignment –Role “Mailbox Import Export” –User

Export einer Mailbox

Fangen wir mal klein an, und exportieren ein einzelnes Postfach um einmal das neue CMDlet kennen zu lernen. Im Beispiel exportiere ich das Postfach unseres Admin auf das Laufwerk D, in den Ordner PST.
New-MailboxExportRequest  -Mailbox Administrator –FilePath “\\localhost\d$\pst\Admin.pst

New-MailboxExportRequest  -Mailbox Administrator –FilePath “\\localhost\d$\pst\Admin.pst

Wir bekommen also die Meldung das der Export in die Warteschlange geschoben wurde, tja was nun? Man kann die aktuelle Export Warteschlange anzeigen lassen und kontrollieren welche Postfächer bereits erledigt sind.
Get-MailboxExportRequest

Get-MailboxExportRequest

Wir sehen das das Admin Postfach den Status “InProgress” hat, also wird es gerade exportiert,nach ein paar Minuten sollte das Postfach fertig sein und folgende zeigen.

Get-MailboxExportRequest

Unser Export hat den Status “Completed” somit ist der Export abgeschlossen. Wenn ihr jetzt ein paar Postfächer exportiert, wird die Liste immer weiter wachsen, auch wenn der Export bereits erledigt ist, wird der Eintrag nicht gelöscht, dazu gibt es ein einfach Kommando, damit die Queue wieder geleert wird, damit können auch Exporte abgebrochen werden, also Vorsicht.
Get-MailboxExportRequest | Remove-MailboxExportRequest

Get-MailboxExportRequest | Remove-MailboxExportRequest

Massen-Export als Task

Jetzt kommen wir zum spannenden Teil, oben habe ich euch die Basics gezeigt, jetzt kommen wir zu dem Punkt, der euch alle interessiert. Wir kann ich alle Postfächer auf einem Exchange Server 2010 mit SP1 als Task automatisiert exportieren? Zuerst einmal das Kommando das wir benötigen um alle Postfächer als PST zu exportieren.
(Get-Mailbox) | foreach {New-MailboxExportRequest –Mailbox $_.alias –FilePath “\\localhost\d$\pst\$_.pst”}

(Get-Mailbox) | foreach {New-MailboxExportRequest –Mailbox $_.alias –FilePath “\\localhost\d$\pst\$_.pst”}

Danach sollte sich die Queue wie oben füllen. Der Export dauert bei mir rund 1 Stunde mit ca. 20GB. Es gibt auf dem Blog von StevieG eine andere Möglichkeit, die aber bei mir nicht funktioniert hat, somit habe ich mir das hier selber zusammengebaut, was für mich als Nicht-Programmierer nicht ganz so einfach war. Zum Schluss müssen wir das ganze jetzt noch automatisieren, wobei hier ein paar Ding zu beachten sind.

Wir müssen die Queue leeren, ich möchte vor jedem Export die alten PST Dateien löschen und der Export soll laufen. Das sollte mit diesen 3 Kommandos erledigt sein.

Get-ChildItem d:\pst\ -include *.pst -recurse | foreach ($_) {Remove-Item $_.fullname}
Get-MailboxExportRequest | Remove-MailboxExportRequest -confirm:$false
(Get-Mailbox) | foreach {New-MailboxExportRequest -Mailbox $_.alias -FilePath \\localhost\d$\pst\$_.pst}

Das ganze jetzt noch an eure Umgebung anpassen, also die Verzeichnisse ändern, und ab damit in eine PS1 Datei, das ganze wird dann per Batchfile aufgerufen, welches wir in den TaskPlaner hängen, und schon läuft der PST Export unter Exchange Server 2010 SP wie geschmiert. Ich habe alles nochmal als Zip Datei zum Download bereitgestellt, darin sind alle Kommandos nochmals als Textdatei zusammengefasst, und die PS1 und BAT File für den automatisierten Export.

Download PSTexport2010sp1.zip

 

lg michael

44 comments to Export PST bei Exchange 2010 SP1

  • Basti

    Hallo Michael,

    wir hatten schon vor ein paar Monaten mal die Ehre :) Leider seh ich in Deiner Anleitung hier kaum einen Unterschied zu meinem Vorgehen, nur Dein UNC Pfad geht über localhost und nicht per %computername%.
    Also, ich würde zu gern wissen was bei Dir anders ist, so daß Du es schaffst 20GB zu exportieren. Bei mir ist die Kiste leer, eine Mailbox mit 120MB. Und diese braucht ca. 12-13 min. für den Export. Die Einrichtung ist eine Plain SP1 Installation gewesen, und ich exportiere nun auch wie Du per “localhost” und nicht per %computername%. Trotzdem sehe ich, daß der Process “System” beim Export die volle Plattenauslastung macht und da kommt fast nichts an Content rüber. Auch an der MSExchangeMailboxReplication.exe.config war ich schon, kein Erfolg.
    Hast Du vielleicht noch eine Idee?

  • @basti, ich werd mir das mal ansehen,werde aber vor Weihnachten nicht mehr dazu kommen. Zwischen Weihnachten und Silvester werde ich das bei mir nochmals kontrollieren, dann melde ich mich bei dir.
    lg

  • Basti

    Danke, ich bin echt am verzweifeln. Und scheinbar bin ich nicht der Einzige: http://social.technet.microsoft.com/Forums/en-IE/exchange2010/thread/47bea181-b170-4854-9410-1604f6a54cfd

    Ich bin gespannt was Du herausfindest.

    Besten Gruß

  • Basti

    Hallo Michael,

    erstmal ein frohes neues Jahr :)
    Ich wollte mal fragen, ob Du es zwischen den Feiertagen geschafft hast mal zu schauen.

    Besten Gruß

  • Hallo Basti,
    wünsch dir auch ein frohes Neues. Wie in der IT so üblich, kam mir was dazischen, aber vergessen hab ichs nicht, werde mir das die nächsten Tage ansehen, da es mich auch selber interessiert.

    lg

  • Basti

    Hallo Michael,

    ich wollte nur kurz erwähnen, dass ich die Woche endlich einen Case aufmachen wollte. Dabei wurden auch Links und Artikel im Internet abgefragt. Also hatte ich nochmal nach dem hier geschaut:
    http://social.technet.microsoft.com/Forums/en-IE/exchange2010/thread/47bea181-b170-4854-9410-1604f6a54cfd

    Und siehe da, am 7.2. hat jemand geschrieben, dass bei ihm das Problem durch Update Rollup 2 verschwunden wäre.
    Gemäß der Release Notes haben wir natürlich (weil eine DAG im Einsatz ist) dieses nie angezeigt bekommen.

    Also habe ich nun das Rollup eingespielt und siehe da, es ist wirklich erheblich schneller (mehr kann ich noch nicht sagen, da die Geschwindigkeit mit der RAM Auslastung und der Menge der Mailboxen steht und fällt). Jetzt ist das Bottleneck der RAM, aber das ist leicht zu lösen :)

    Danke für Deine Mühen.

    Gruß
    Basti

  • Hallo basti,
    freut mich. Hab das die Tage mit jemandem besprochen, der mir Infos zukommen lassen wollte, mal sehen ob er die selbe Lösung hat.
    Grüße Michael

  • Thos

    Zur Ergänzung noch der Export eines Archivpostfaches:
    New-MailboxExportRequest -Mailbox Administrator -IsArchive -FilePath “\\localhost\PST\Admin_Archive.pst”

    lg Thos

  • christian

    hallo

    ich wollte eben den Befehl New-MailboxExportRequest bei meinem SBS 2011 Testserver ausprobieren. Jedoch sagt er mir, dass die Benennung “new-mailboxexportrequest” wurde nicht als name eines cmdlet, einer funktion, einer Skriptdatei oder ausführbaren Programmes erkannt.

    Muss ein Modul installiert werden bzw. was mache ich falsch?

    danke!

  • @christian
    hast du auch die Rechte vergeben, wie hier beschrieben?

  • christian

    ja habe ich gemacht. nach einem restart des servers gings aufeinaml! Danke!

  • @Christian, freut mich. Schönes Wochenende noch

  • Franz

    Habe das gleiche Problem wie christian bei einem EXEnterprise.
    Die Rechte habe ich wie beschrieben vergeben…

  • Hallo Franz,

    bei Christian hat ein Neustart geholfen, hast du das schon getestet?

    Michael Seidl

  • Hallo,
    ich hatte auch die Fehlermeldung, in dem Tutorial hat sich oben ein kleiner Fehler eingeschlichen, statt:

    New-ManagmentRoleAssignment –Role “Mailbox Import Export” –User Springfield\Administrator

    …management… mit “e” :)

    New-ManagementRoleAssignment –Role “Mailbox Import Export” –User Springfield\Administrator

    Hatte es auch übersehen. Danke ansonsten für den Tipp
    Mario

  • Hallo Mario,

    danke für den Hinweis, wurde korrigiert.

    Grüße Michael

  • Stephan

    Hallo zusammen,
    ich sitze soeben an einem Exchange 2010 SP1 Server mit Rollup Update 3-v3 installiert.
    Ich möchte demnächst ca. 250GB (natürlich mehrere PST-Dateien) importieren.

    Aktuell teste ich dies und habe m.E.n sehr schlechte Werde
    Bsp.:
    – eine PST mit 1,3GB Größe benötigt 45 Minuten zum importieren!
    – parallel lief ein Import einer PST it 900MB; Zeit benötigt: 28 Minuten

    Die Anzeige für BytesTransferredPerMinute schwankt sehr – komme aber kaum über 50MB/min raus.

    Exchange Server:
    Windows 2008 R2 Standard
    Proz: Intel Xeon X3430 @ 2,40GHz (Quad)
    RAM: 16GB RAM
    HDD: SAN von Hersteller und Typ QNAP TS-559 iSCSI angeschlossen
    Exchange 2010 SP1 inkl. Rollup Update 3-v3

    Hat jemand von Euch evtl. eine Idee warum der Import so lange dauert? Bzw. hat jemand von Euch vergleichswerte für mich?

    Vielen Dank bereits in die Runde und viele Grüße,
    Stephan

  • Hallo Stephan,
    Ich bin aktuell noch im Urlaub, werde nächste Woche mal einen Import bei uns machen, und dir Bescheid geben.
    Grüße Michael

  • Martin

    Geht der Export auch für PublicFolder?

    Gruß
    Martin

  • Stephan

    Hallo zusammen,

    @Michael: Vielen Dank bereits! Wir werden am Wochenende 19.08 – 21.08 migrieren

    @Martin: Ich persönlich habe mich damit abgefunden, die PublicFolder per Outlook Client zu exportieren (PST) und wieder mit dem Outlook Clietn zu importieren.

    Viele Grüße,
    Stephan

  • Martin

    Also,
    ich habe für 26,9 GB 1:42 Stunden benötigt, nachdem ich das Update Rollup 2 installiert hatte. Davor düe 50MB 58Minuten 😉
    Ich werde diese Methode zur Datensicherung verwenden.
    Nun fehlt mir nur noch der PF.

    Danke für die Hilfe.

  • Stephan

    Hallo Martin,
    Du hast 1:42 Stunden benötigt für den IMPORT von 26,9GB?
    Wir haben Exchange 2010 SP1 inkl. Update Rollup 3-v3. Wie schaut denn Deine Exchange Infrastruktur aus? Hast Du mehrere CAS Server oder nur einen?

    Danke,
    Stephan

  • Florian S

    @Christian

    “ich wollte eben den Befehl New-MailboxExportRequest bei meinem SBS 2011 Testserver ausprobieren. Jedoch sagt er mir, dass die Benennung “new-mailboxexportrequest” wurde nicht als name eines cmdlet, einer funktion, einer Skriptdatei oder ausführbaren Programmes erkannt.”

    Hier reicht es die ExchangeManagement Konsole einfach einmal zu schliessen und neu laden zu lassen. Geht auch ohne Neustart.

    Florian

  • MichaelH

    Hallo Michael

    ist es auch möglich, nur die Archive von allen zu exportieren?

    Gruss Michael

  • Hallo,

    werde ich mal abklären und einen Beitrag schreiben

    Michael Seidl

  • Niklas

    Hallo zusammen,
    ich habe es mal anders probiert nach dem ich auch den beitrag gelesen habe. Muss alerdings dazu sagen das ich als NICHTPROGRAMMIERER mir den größten Teil aus dem netz zusammen geklaut habe.

    Als Start cmd habe ich folgendes gemacht

    ====================Beisskante anfang==============================
    @echo off

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command “. ‘C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1’; Connect-ExchangeServer -auto” -command C:\scripte\export.ps1 > C:\log\export-log.txt
    ====================Beisskante Ende==============================

    als PS1 Datei folgende

    ====================Beisskante anfang==============================
    New-ManagementRoleAssignment -Role “Mailbox Import Export” -User “Administrator”

    foreach ($i in (Get-Mailbox)) { New-MailboxExportRequest -Mailbox $i -FilePath “\\SERVERPFAD\PST\$($i.Alias).pst” }
    ====================Beisskante anfang==============================

    Da ich im auch im netz sicher auf eine andere Maschine, dauert das ganze ca. 2 -3 H. es sind hierbei ca. 60 Konten die gesichert werden.
    Ich habe das dann ein paar mal beobachtet und die Zeit gemessen.
    Nah ca. 4 h ( um ganz sicher zu gehen, sende ich noch den eintrag

    Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

    ab um die Liste wieder leer zu kriegen.
    Ich hoffe es hilft hier ein bisschen.
    mfg
    niklas

  • Hallo Niklas,
    danke für deine Info, jedoch kannst du dir die erste Zeile in deiner PS1 Datei sparen, da du diese Rechte nicht bei jedem Aufruf vergeben musst.
    Gruß, Michael

  • Dave

    Hey,

    am Freitag muss ich einen Massenexport machen, allerdings möchte ich nur Kalender, Notizen, Kontakte und Aufgaben rausziehen. Als Einzelbefehl sieht das so aus ->

    New-MailboxExportRequest -Mailbox xxx -IncludeFolders “#calendar#”, “#notes#”, “#tasks#”, “#contacts#” -FilePath \\xxx\xxx.pst

    Geht das auch mit deinem Befehl? Also praktisch so ->

    (Get-Mailbox) | foreach {New-MailboxExportRequest -Mailbox $_.alias -IncludeFolders “#calendar#”, “#notes#”, “#tasks#”, “#contacts#” -FilePath “\\PFAD\$_.pst”}

    Würde das dann Freitag einfach eintippeln.

    VG :)

  • Macgreg

    Erstmal: vielen Dank für Deine Arbeit, hat mir schon sehr geholfen.

    aber: jetzt hab ich auch mal dein Script getestet, hierbei bekomme ich folgendes in die Log Datei geschrieben:

    Die Datei “D:\pst\export.ps1” kann nicht geladen werden. Die Datei “D:\pst\expo
    rt.ps1” ist nicht digital signiert. Das Skript wird auf dem System nicht ausgef
    hrt. Weitere Informationen erhalten Sie mit “get-help about_signing”..
    Bei Zeile:1 Zeichen:18
    + D:\pst\export.ps1 <<<<
    + CategoryInfo : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

    Von Hand funktioniert der Export sowie der Massenexport einwandfrei. Wie bekomme ich das mit der digitalen Signierung hin?

    Danke….

  • Hallo,

    starte ein PowerShell Fenster als Admin, und führe folgendes Kommando aus.

    Set-ExecutionPolicy Unrestricted

    lg
    Michael Seidl

  • Torsten

    Hallo Michael,

    ich versuche gerade dein Skript bei mir auf dem Server automatisiert zum laufen zu bekommen. Ich hab dazu einfach ein Task erstllt der mir die Batch Datei aufruft. Wenn ich das Batch File von Hand ausführe dann läuft alles ohne Probleme und er exportiert mir meine Postfächer.
    Wenn ich jedoch den Task ausführe, dann erhalte ich folgende Fehlermeldung in der cmd:

    C:\>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command “. ‘c:\Pr
    ogram Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1’; Connect-Excha
    ngeServer -auto; .\MassExport.ps1”
    . : Die Datei “C:\Program Files\Microsoft\Exchange
    Server\V14\bin\RemoteExchange.ps1” kann nicht geladen werden, da die
    Ausführung von Skripts auf diesem System deaktiviert ist. Weitere
    Informationen finden Sie unter “about_Execution_Policies” unter
    “http://go.microsoft.com/fwlink/?LinkID=135170”.
    In Zeile:1 Zeichen:3
    + . ‘c:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1’;
    Conne …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
    Connect-ExchangeServer : Die Benennung “Connect-ExchangeServer” wurde nicht
    als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines
    ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens,
    oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den
    Vorgang.
    In Zeile:1 Zeichen:76
    + . ‘c:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1’;
    Conne …
    +
    ~~~~~
    + CategoryInfo : ObjectNotFound: (Connect-ExchangeServer:String)
    [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    .\MassExport.ps1 : Die Benennung “.\MassExport.ps1” wurde nicht als Name eines
    Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms
    erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt
    ist (sofern enthalten), und wiederholen Sie den Vorgang.
    In Zeile:1 Zeichen:106
    + … eServer -auto; .\MassExport.ps1
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (.\MassExport.ps1:String) [], Co
    mmandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    Ich hab es schon mit den Einstellungen
    -Set-ExecutionPolicy RemoteSigned
    sowie
    -Set-ExecutionPolicy Unrestricted
    versucht, allerdings macht das keine Änderung.
    Hast du eine Idee was ich noch versuchen könnte ?

    Gruß Torsten

  • Hallo Torsten,

    probier mal die Einstellungen im Task selbst. Da gibts ein Setting das den Task mit erhöhten Rechten ausführt.

    lg

  • Torsten

    Hallo Michael,

    das ich hab ich schon versucht, selbe Meldung.
    Hab auch den Server mal neugestartet für den Fall das die Rechte erst nach einem Neustart aktualisiert werden, aber das hat leider auch nichts geändert.

  • Hi,
    kann’s mir zwar nicht vorstellen, aber probier mal folgendes.
    Starte eine PowerShell Session, jedoch im 32bit Modus, und führe das Kommando
    Set-ExecutionPolicy RemoteSigned
    aus, hab das so eine Vermutung
    lg Michael

  • Torsten

    Hallo Michael,

    jetzt bekomme ich folgende Meldung:

    WARNUNG: Fehler beim Laden der Konsole C:\Program Files\Microsoft\Exchange
    Server\V14\Bin\exshell.psc1:
    Das Windows PowerShell-Snap-In Microsoft.Exchange.Management.PowerShell.E2010
    kann aufgrund des folgenden Fehlers nicht geladen werden: Es wurden keine
    Snap-Ins fr die Windows PowerShell-Version 3 registriert.
    Der Befehl “D:\Backup\Exchange\Montag\export.ps1” konnte nicht ausgefhrt werden, da einige Windows PowerShell-Snap-Ins nicht geladen wurden.

    Hatte zuvor die Powershell x86 gestartet und den Set-ExecutionPolicy Befehl abgesetzt.

    Gruß Torsten

  • Hi,
    kann es sein das du das Script auf einem Windows Serber 2012 ausführst?
    lg

  • Torsten

    Hi,

    nein ist einmal ein 2008R2 und einmal ein SBS2011.

  • Du führst also das Script nicht direkt am Exchange Server aus?
    Kannst du das mal testen?

  • Bernd

    Hallo Michael,

    ich führe das ganze auf einem Exchange 2010 SP3 auf einem Windows Server 2012 Server aus. Wenn ich das Script aus der Ps1 Datei manuell in der Exchange Shell laufen lasse dann funktionierrt es, ich bekomme für alle Mailboxen die noch auf Exchange 2003 sind (etwas späte Migration) eine Fehlermeldung, die auf dem Exchange 2010 werden aber alle gesichert.
    wenn ich das ganze über die Aufgabenplanung mache werden die vorhandenen .pst Dateien auf dem Netzlaufwerk gelöscht aber kien neuen angelegt, in der Logdatei sind nur die Fehlermeldungen betreffend der Mailboxen auf dem Exch2003, danach passiert nichts mehr.

    Gruß
    Bernd

  • Bernd

    Es geht doch!
    Nach einem Neustart des Servers tut´s.
    Irgendeine der Änderungen mit den Berechtigungen hat wohl den restart gebraucht.

    Danke für die sehr genaue Anleitung.

    Bernd

  • Hallo Bernd,

    freut mich das es jetzt doch funktioniert.

    Michael Seidl aka Techguy

  • […] zum Thema Exchange. Vorher noch ein kurzer Rückblick. Anfang dieser Woche habe ich euch den neuen PST Export unter Exchange Server 2010 SP1 gezeigt, und euch erklärt wie das neue CMDlet “New-MailboxExportRequest” funktioniert. Anfang […]

Leave a Reply

  

  

  


*