The Exchange Management Shell makes it easy to export mailboxes to a PST file. This short article shows how it works.
In order for mailboxes to be exported (and also imported), the user performing the export must first be assigned an RBAC role; for the Administrator user, this is done with the following command:
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "Administrator"
After assigning the role, the Exchange Management Shell must be closed and reopened. The CMDLets for export and import are now available.
Export of a single mailbox
The following command can be used to export a single mailbox:
get-mailbox frank | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\frank.pst"
In this example, the mailbox with the alias Frank is exported to \\fwcomex1\d$\Export. The export always takes place to a share, a path such as D:\Export does not work. Only PST can be used as the format. However, PST files can be opened easily with Outlook.
The status of the export can be displayed with the following command:
Get-MailboxExportRequest
More details can be obtained by appending a "| fl". The following command provides the most information, which is also interesting for troubleshooting:
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | fl
The BadItemLimit is particularly interesting. By default, Exchange aborts the export as soon as a bad item is found in the mailbox. However, the limit for bad items can be adjusted:
get-mailbox frank | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\frank.pst" -BadItemLimit 50
Export of all mailboxes in a database
With a slight modification of the command, all mailboxes in a database can also be exported, for example:
get-mailbox -Database FWDB1 | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\fwcomex1\d$\Export\$_.pst"}
A PST file is then stored in the share for each mailbox:
Export of archive mailboxes
Archive mailboxes can also be exported. The command for an archive of a single user is as follows:
get-mailbox frank -Archive | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\frank_archiv.pst"
All archive mailboxes in a database can be moved with the following command:
get-mailbox -Database FWDB1 -Archive | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\fwcomex1\d$\Export\$_.pst"}
Export shared mailboxes
Shared mailboxes can also be exported; in principle, they are handled in the same way as normal user mailboxes. This means that a shared mailbox can also be exported using the following command:
get-mailbox info | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\info_shared.pst"
All shared mailboxes in a database can be exported with the following command:
get-mailbox -database FWDB1 | where {$_.RecipientTypeDetails -match "SharedMailbox"} | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\fwcomex1\d$\Export\$_.pst"}
Export only certain data from a mailbox
In some cases, it is only necessary to export certain data from a mailbox. For example, only the contacts or only the calendar.
All contacts in a mailbox can be exported with the following command:
get-mailbox frank | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\frank_kontakte.pst" -IncludeFolders Contacts
The calendar can then be exported as follows:
get-mailbox frank | New-MailboxExportRequest -FilePath "\\fwcomex1\d$\Export\frank_kalender.pst" -IncludeFolders Calendar
Remove ExportRequest
After the data has been exported, the export requests can also be deleted again. All export requests can be removed with the following command:
Get-MailboxExportRequest | Remove-MailboxExportRequest
The command only removes the export request, the PST files remain untouched.
Lieber Franky, wiedereinmal danke für deine tollen Beiträge ! ich hänge momentan gleich mit folgendem Fehler:
leider bin ich trotz einiger Recherche nicht weitergekommen.. der Export via EAC funktioniert…
für einen Tip wär ich superfroh ! Danke, GLG Chris
Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert
oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
+ CategoryInfo : InvalidArgument: (***n* ***rw*l***er:PSObject) [New-MailboxExportRequest], ParameterB
indingException
+ FullyQualifiedErrorId : InputObjectNotBound,New-MailboxExportRequest
+ PSComputerName : s**-m**l.k****10*2.**
Das war bei mir auch das Problem.
Mit einem veränderten Befehl klappt e.
New-MailboxExportRequest -Mailbox „frank“ -FilePath „\\fwcomex1\d$\Export\frank.pst“
Ist warscheinlich durch Aktualisierungen von Microsoft ausgelöst worden.
Hallo Zusammen
Mich würde interessieren, ob jemand schon versucht hat ein Online Archiv eines On-Prem Benutzers zu exportieren.
Ich habe mir bisher nur helfen können, indem ich alle Daten manuell aus dem CloudArchiv wieder OnPrem verschoben habe, um dann einen Export in eine PST zu machen.
Hat da jemand eine andere Idee, würde er mich unglaublich glücklich machen.
Danke
Michael
Moin Franky,
das hast mal wieder einen super Artikel geschrieben.
Danke dir.
Auf meinen Exchange 2019 klappte aber der Export mit dem Befehl
get-mailbox frank | New-MailboxExportRequest -FilePath „\\fwcomex1\d$\Export\frank.pst“ nicht. Die Pipe konnte beim den 2ten Befehl nicht zugewiesen werden. Aber egal ich habe dann mal was gesucht und eine Lösung gefunden.
Aufgabe: Ich musste ein Postfach mit Archiv in ein neues Postfach kopieren.
Ich habe mal alles aufgeschrieben. Vielleicht hilft es ja jemanden.
RBAC Rolle dem Administrator zuweisen
New-ManagementRoleAssignment –Role „Mailbox Import Export“ –User „Administrator“
Postfach exportiert
New-MailboxExportRequest -Mailbox inn -FilePath „\\serverex1\backup\inn_archiv.pst“ -BadItemLimit 50 -AcceptLargeDataLoss
Archiv Postfach exportiert
New-MailboxExportRequest -Mailbox inn -IsArchive -FilePath „\\serverex1\backup\inn-archiv.pst“ -BadItemLimit 50 -AcceptLargeDataLoss
Exportjob überprüfen
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | fl
Exportjob dann löschen wenn OK und fertig
Get-MailboxExportRequest | Remove-MailboxExportRequest
Postfach inn in Postfach inn1 importiert
New-MailboxImportRequest -Mailbox inn1 -FilePath „\\serverex1\backup\inn.pst“ -BadItemLimit 50 -AcceptLargeDataLoss
Importjob überprüfen
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics | fl
Importjob dann löschen wenn OK und fertig
Get-MailboxImportRequest | Remove-MailboxImportRequest
Archive Postfach inn in Postfach inn1 importiert
New-MailboxImportRequest -Mailbox inn1 -IsArchive -FilePath „\\serverex1\backup\inn-archiv.pst“ -BadItemLimit 50 -AcceptLargeDataLoss
Importjob überprüfen
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics | fl
Importjob dann löschen wenn OK und fertig
Get-MailboxImportRequest | Remove-MailboxImportRequest
Hallo zusammen,
eine Kurze Frage noch , ob die Möglichkeit bestehet die Mailboxen in PST zu exportieren über einen bestimmten Zeitraum, wenn die Postfächer zu groß sind, damit ich ein Teil schon mal ein paar Tage vor der Migration im neuen Exchange (kein Trust) habe und dann nur die Differenz am Stichtag neu Exportiere und Importire?
Danke im Voraus.
Gruß
Sergej
Hallo,
beim import der pst kommt es zu folgendem Fehler und abbruch des Imports:
Error: This mailbox exceeded the maximum number of large items that were specified for this request.
Grds. würde es mittels PowerShell und einem BadItemLimit vermutlich erstmal funktionieren.
Aktuell würde ich jedoch immer noch davon abraten, gerade mit BadItemLimit (was wir ebenfalls dringend benötigten), fehlten etliche Mails und wirklich sauber war es dadurch dann nicht mehr.
Schau dir mal Drittanbieterlösungen an, ich kanns nur empfehlen, knapp 10 EUR pro Postfach und 30 Minuten Arbeit bis das Programm anfängt hochzuladen. Die BadItems kannst du dir danach anzeigen lassen und ggfsl. nochmal manuell importieren (bei uns waren knapp 200GB Datenbank und 35 defekte Elemente. Ich würde den Namen der Software durchaus verraten, will hier aber nicht in den Verdacht der Schleichwerbung geraten.
Hallo Christian,
danke für deine Antwort, wie setze ich den BadLimit?
Hallo,
eigentlich recht einfach, es wird nur der folgende Befehl angehängt:
-BadItemLimit 50
Ansonsten kannst du im folgenden Beitrag etwas zum BadItemLimit nachlesen, handelt sich hierbei nicht um einen Export (sondern Move) ist aber meines Wissens nach 1:1 transportierbar auf den Export Befehl:
https://www.frankysweb.de/howto-migration-von-exchange-2016-zu-exchange-2019-teil-3/
Wie weiter oben beschrieben: Export aller Postfächer einer Datenbank:
Wie kann man nur einen spezifischen Unterordner unter Posteingang/“Ordner zum exportieren“ exportieren?
get-mailbox -Database FWDB1 | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath „\\fwcomex1\d$\Export\$_.pst“}
Hi,
bin kein Profi ITler, aber auf Grund meiner Historie, meiner Begeisterung für alles was IT ist, sowie meiner Stellung im Beruf und meinen Erfahrungen mit externen Partnern bin ich im Betrieb der „AvD“. Vor zwei Jahren hat uns ein Dienstleister einen Exchange 2016 verkauft und auch installiert, nachdem die Probleme immer mehr wurden, so wurde es uns zuletzt nahezu unmöglich, mit Strato Mails zu versenden.
Jetzt haben wir umgestellt auf den Online Exchange und sind im ersten Moment mal sehr zufrieden. Da wir auf Grund der o. g. Probleme sehr schnell umstellen mussten, erledigten wir diese Tätigkeiten sofort und wollten uns im Nachgang darum kümmern die Postfächer zu exportieren und Online einzuspielen. Das Exportieren gestaltete sich jedoch extrem kompliziert, wir haben eine EX Datenbank von ca. 200GB und der erste Export von allen Postfächern (kombiniert mit BadItemLimit 50) endete mit einem COMPLETED bei 19 Postfächern und FAILEDOTHER bei 4 Postfächern. Nach erneutem Anlauf schafften es dann auch diese 4 Postfächer zum Status COMPLETED. Für mich unverständlich, dass ein Exportvorgang von 200GB fast 24 Stunden dauert, trotz kurzeitiger Freigabe von 16 Kernen, 64GB RAM und der konsequenten Nutzung von SSDs, aber das nur am Rande, Exchange ist nicht gerade ein Performancewunder.
Die wahre Odysee begann dann aber beim einspielen der PSTs, der vorgeschlagene Weg vom Dienstleister war das einspielen in die lokalen Outlook Clienst, erster Client angeschaltet, Importfunktion gewählt und „X“, nicht funktioniert, PST angeblich korrupt. Nun gut, erste Idee, PST reparieren lassen, Office bietet da ja durchaus ein Tool, dauert ewig, Ergebnis ist, „repariert“. Eingespielt und diesmal kein Fehler, aber dafür viel besser, er hat eine Mail wiederhergestellt. Super, nichts hat funktioniert. Das ganze ging dann so weiter, auf keinem einzigen PC hat es reibungslos funktioniert, jedes Mal kam zumindest ein Fehler von defekten Elementen. Mein Vertrauen in diesem Zeitpunkt = 0
Ich habe geschlagene drei Tage und Nächte alles erdenkliche versucht und nichts hat wirklich funktioniert. Meine letzte Idee war es eine Drittanbieter Software zu nutzen. Als ich zu diesem Schluss kam, war der Dienstleister natürlich im Feierabend, also habe ich mich selbst auf die Suche gemacht und für 23 Postfächer habe keine 200 EUR gezahlt und nach der guten Anleitung innerhalb von einer halben Stunde die Migration starten können. Ergebnis nach nun knapp 16 Stunden ist, das 74% der Postfächer hochgeladen sind und ich bisher 35 „Failed Items“ habe, die ich mir aber einzeln anzeigen lassen kann (zumindest Betreffzeile), diese habe ich mir jetzt manuell aus der Datenbank geholt (OWA) und einzeln gespeichert.
Ist vieleicht hier alles ein wenig falsch, aber meine feste Überzeugung, dass die Powershell Alternative keine wirkliche Alternative ist. meine ein neuer Exchange, ein Online Plan oder sonstwas kostet letztlich ein vielfaches von der Migrationssoftware. Dazu kommt ja noch, dass man selbst wenn es funktioniert eine riesige Manpower benötigt um die Daten zurückzuspielen (zumindest Online fehlte bei uns die Importmöglichkeit (derzeit nicht freigegeben in unserer Region). Hier sind ja viele ITler die damit ihr Geld verdienen unterwegs, verkauft ihr Kunden dieses hier beschriebene Vorgehen wirklich?
Gruß
Christian
Hallo Christian,
das von dir beschriebene Szenario ist kein gängiger Weg um eine Migration von Onpremise Exchange 2016 in die Cloud zu machen. Dieses Vorgehen wird bei Übernahme von IMAP oder POP Konten eingesetzt. Für solch eine Migration hätte der AD-Connect für die Synchronisierung der Onpremise Nutzer in die Cloud eingerichtet werden müssen. Danach würde der Hybrid Modus für Exchange 2016 aktiviert und die Verbindung mit Exchange Online hergestellt werden. Somit wäre es möglich gewesen die lokalen Postfächer mittels Onboard Migrationsverschiebung von Exchange in die Cloud zu lagern.
Mit dieser Methode hätten keine Postfächer vorher exportiert werden und mühsam über einen Outlook Client hochgeladen werden müssen. Bei älteren Exchange Versionen setzt man die sogenannte „Cutover Migration“ über Outlook Anywhere ein (Was aber auch mit Exchange 2013 und 2016 funktioniert). Dies wäre auch eine einfachere Alternative gewesen.
Was mich aber auch wundert ist das der Exchange 2016 Server bei euch so schlecht lief. Bei richtiger Einrichtung läuft der Server wirklich einwandfrei und vor allem mit denen von euch ausgestatteten Hardware Ressourcen.
Gruß
Sebastian
Weitere Kalender sind Unterordner vom Standardkalender
Versuchs mal mit:
get-mailbox frank | New-MailboxExportRequest -FilePath „\\fwcomex1\d$\Export\frank_kalender.pst“ -sourcerootfolder „Kalender“ -IncludeFolders „Unterkalender“
Hallo Frank,
danke erst mal für Alles. Kann ich den Befehl
get-mailbox frank | New-MailboxExportRequest -FilePath „\\fwcomex1\d$\Export\frank_kalender.pst“ -IncludeFolders Kalender
noch verfeinern wenn sich mehrere Kalender in dem Postfach befinden?
Hallo, vielen Dank für die Anleitung.
Besteht die Möglichkeit differentiele PST Sicherungen zu erstellen? z.B. einen Export Request um alle seit Datum xy geänderten Daten in eine PST Datei zu sichern?
Gruß
MFG
Hallo,
nein, nur geänderte Daten zu exportieren ist nicht möglich. Es handelt sich hier auch um einen Export der Daten, nicht um eine Möglichkeit für ein Backup. Die Sicherung erfolgt via VSS.
Gruß,
Frank
Hallo Franky,
ich muss von Exchnage-Online, Office 365, ein paar Postfächer exportieren.
Funktioniert diese Anleitung auch mit Office 365 oder muss ich dazu diese Anleitung benutzen?:
https://www.codetwo.de/blog/office-365-postfaecher-mittels-ediscovery-in-pst-exportieren/5929
Vielen Dank.
Grüsse Peter
Hallo Peter,
meine Anleitung ist für Exchange On-Prem.
Gruß,
Frank
Hallo Franky,
ich habe das Problem das der PST Export einer kompletten Datenbank mit ca. 25 Postfächern und 25GB Gesamtgröße sehr lange dauert. Nach 15 Stunden habe ich den Vorgang dann abgebrochen. Man kann erkennen das alle paar Minuten immer nur ein paar MB kopiert werden. Es spielt keine Rolle ob ich die PST Dateien auf einen anderen Server oder auf dem Exchange direkt exportiere. Mit dem Befehl „Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | fl“ konnte ich auf den ersten Blick keine Fehler feststellen. Die Paramter „-BadItemLimit 50000“ und „-AcceptLargeDataLoss“ habe ich gesetzt.
Ich verwende Exchange 2016 mit der Version CU10.
Viele Grüße
Daniel
Hallo,
noch als kleine Hilfestellung: die Berechtigung Schreiben für „Exchange Trusted Subsystem“ der Organisation muss für die Netzwerkfreigabe gesetzt sein, sonst scheitert der Export mit einer entsprechenden Fehlermeldung. Für die, die nicht gleich schreibenden Zugriff für „Jeden“ einrichten wollen.
Gruß
Uwe
Hallo Franky!
Seit Exchange 2016 CU8 habe ich das Phänomen, dass die PST-Dateien auch bei Neuerstellung die 3-4 fache Größe der Postfächer haben. Ist das normal? Gibt es da Abhilfe?
Gruß
Roland
Guten Tag,
ich habe das gleiche Problem.
Gibt es ein Erklärung dafür?
auch, wenn der Thread schon älter ist: Dasselbe Problem mit Exchange 2019, neueste CU. Damit ist leider das Backup nicht nutzbar – ein 10GB Postfach bläht sich zu unglaublichen 25GB+ auf. Interessanterweise aber nur manchmal … ein System habe ich nicht erkannt.
Vage meine ich mich zu erinnern, dass ich mal testweise eine Sicherung mit dem Windows-eigenen Backup der Exchange-„Platte“ gemacht hatte. In Folge war es ein paar Tage gut …
Hallo, kann man auch getrennte Postfächer in eine PST exportieren?
Hi,
kleiner Verbesserungsvorschlag: Um Shared Mailboxes auszufiltern braucht man keinen Where Filter mehr, es reicht ein
Get-Mailbox -RecipientTypeDetails SharedMailbox
Gruß
Hallo,
zunächst vielen Dank an Franky für die vielen hilfreichen Beiträge zu Themen, mit denen viele Exchange Administratoren im Laufe ihrer Karriere konfrontiert werden.
Um meinen Teil dazu beitragen zu können, möchte ich ergänzend hinzufügen, das bei der Konfiguration von -BadItemLimit die 50 als maximaler Wert zu sehen ist.
Sollte es notwendig sein, einen höheren Wert zu definieren, muss der Parameter -AcceptLargeDataLoss mit eingebracht werden.
just my two cents…
Hallo,
zur Info: Ab Exchange 2013 lassen sich die Postfächer auch per GUI (ECP) exportieren.
Zuerst benötigt der Administrator die Berechtigung (kann auch über das ECP vergeben werden), wie im Artikel beschrieben, und wenn man sich dann neu im ECP einloggt und das jeweilige Postfach markiert, kann man über die drei Punkte (erweiterte Optionen) einen PST Export ebenfalls vornehmen.
VG
Super Tipp. Vielen Dank dafür.