Manchmal ist es notwendig Mailboxen aus einer bestehenden Exchange 2010 oder SBS 2011 Umgebung zu exportieren.
Benötigte Komponenten
Um den Export vornehmen zu können müssen ein paar Bedingungen erfüllt sein. Da Clientsoftware auf einem Server meiner Meinung nach nichts zu suchen hat, verwende ich hierfür immer meine Admin Workstation:
- Exchange 2010 SP1 (ist beim SBS 2011 schon dabei)
Outlook 2010 x64(seit SP1 nicht mehr notwendig)- Exchange Management Tools
Import & Export Rechte
Um Mailboxen exportieren und importieren zu können benötigt man ein spezielles Recht (welches per default keinem Benutzer zugeordnet ist). Die Zuordnung erfolgt wie alle weiteren Befehle auch in der Exchange Management Shell.
New-ManagementRoleAssignment –Role “Mailbox Import Export” –User AD\ExAdmin
Export einer Mailbox
Der einfachste Vorgang ist das exportieren einer einzigen Mailbox. Hierfür reicht ein simpler Powershell Befehl:
New-MailboxExportRequest -Mailbox User01 -FilePath "\\adminpc\export\User01.pst”
Wichtig: Der Pfad zu den Exportdateien muss ein UNC Pfad sein, der für das System auch erreichbar ist!
Export aller Mailboxen
Ein klein wenig komplexer, aber dank PowerShell noch immer recht einfach, wird das exportieren aller vorhandenen Mailboxen auf dem System:
foreach ($i in (Get-Mailbox)) { New-MailboxExportRequest -Mailbox $i -FilePath "\\adminpc\export\$($i.Alias).pst” }
Status des Exports
Bei größeren Exports will man natürlich auch wissen, wie weit der Fortschritt der einzelnen Schritte ist. Diesen kann man sich mit nachfolgendem Befehl anzeigen lassen:
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
Import einer Mailbox
Daten die man exportiert hat will man natürlich auch wieder importieren. Das erreicht man mit folgendem Befehl.
New-MailboxImportRequest –Mailbox User01 –FilePath "\\adminpc\export\User01.pst”
Massenimport von Mailboxen
Natürlich gibt es via Powershell auch einen Weg viele Mailboxen auf einen Schlag zurück zu spielen. In meinem Beispiel ist es notwendig, dass die exportierten Dateien den Namen der Mailbox tragen UND das die neuen Mailboxen den gleichen Namen haben! Verwendet man die Exportsyntax von oben, dann ist zumindest mal die erste Bedingung erfüllt.
dir \\10.10.10.10\path_to_pst\*.pst | %{ New-MailboxImportRequest -Mailbox $_.BaseName -FilePath $_.FullName }
Gibt es ein *.pst File in dem Ordner für welchen das System keine Mailbo findet, dann erhält man diese rote Fehlermeldung. Das ist aber nicht weiter problematisch – in meinem Fall gibt es diesen Benutzer in der neuen Umgebung bewußt nicht mehr…
Aufräumen
Nachdem die Aufträge durch sind ist es wichtig, die fertigen Requests wieder aus der Exchange Request Liste zu entfernen (auch wenn Sie auf completed stehen, bleiben sie dort stehen!). Erledigt wird das wieder mit einem einfachen PowerShell Befehl:
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest
Update
12.06.2011:
- Import Syntax angepasst und um einen Massenupdate erweitert
- Outlook aus den benötigten Komponenten gelöscht
22.06.2011:
Ich hatte tatsächlich vergessen den Teil zum aufräumen der Requests im Exchange Request System vergessen zu erwähnen. Danke für den Hinweis Nils.