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
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
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
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.
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
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”}
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.
[adrotate group=”2″]
Download PSTexport2010sp1.zip
lg michael
Pingback: Linkfreitag mit Exchange, 12 Ausgabe » Linkfreitag, Exchange » TechGuy
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
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ß
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
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
Zur Ergänzung noch der Export eines Archivpostfaches:
New-MailboxExportRequest -Mailbox Administrator -IsArchive -FilePath “\\localhost\PST\Admin_Archive.pst”
lg Thos
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?
ja habe ich gemacht. nach einem restart des servers gings aufeinaml! Danke!
@Christian, freut mich. Schönes Wochenende noch
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
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
Geht der Export auch für PublicFolder?
Gruß
Martin
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
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.
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
@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
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
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
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 🙂
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
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
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
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 fr die Windows PowerShell-Version 3 registriert.
Der Befehl “D:\Backup\Exchange\Montag\export.ps1” konnte nicht ausgefhrt 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
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?
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
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
Pingback: Top 10 Beiträge, im zweiten Halbjahr 2013 » TechGuy
Pingback: TOP 10 Beiträge, im ersten Halbjahr 2014 » TechGuy