Importieren von PST Dateien und Versenden von Status-Emails
Hier wird die Vorgehensweise für das Importieren von bereitgestellten PST-Dateien in eine Exchange 2010 Mailbox bzw. Archiv beschrieben.
Benötigte Berechtigungen:
Damit über die Exchange Management Shell ein Import von PST-Dateien vorgenommen werden kann, ist es notwendig zuvor eine entsprechende Sicherheitsgruppe im Active Directory anzulegen. Dies kann über den Exchange Control Panel ECP durchgeführt werden. Alternativ geht dies natürlich auch über die Exchange Management Shell. Selbst Mitglieder der höchsten Exchange Gruppe „Ogranization Management“ können per default keinen Import oder Export anstossen.
Um diese neue Grupppe anzulegen meldet man sich an Outlook WebApp an mit einem Account, der das Echange Recht hat RBAC Gruppen zu administrieren. Nun wechselt man in die Optionen zu dem Punkt „Meine Organization verwalten“. Hier geht man auf die Einstellungen für „Rollen und Überwachung“.
· Erstellen einer neuen Rollengruppe z.B. „ImportExport-PST“.
Die folgende Abbildung zeigt die Gruppe und deren Rollen, die für das Importieren bzw. Exportieren notwendig sind. Nun muss nur noch der Account hinzugefügt werden, der die PST-Dateien in die Mailboxen/Archive importieren soll. In diesem Beispiel ist es der Administrator.
Damit eine geplanter Import erfolgreich verlaufen kann, muss die Exchange Mailbox bereits existieren bzw. ein Archiv muss angelegt sein, falls die Migration direkt in das Exchange Archiv geschehen soll.
Um eine Migration zu starten, wird eine Exchange Management Shell auf einem Exchange Mailbox Server geöffnet. Dies muss nicht der Mailbox Server sein auf dem sich die Archive befinden. Es muss auch kein Outlook auf dem Exchange Server installiert sein. Nur das Service Pack 1 für Exchange 2010 wird benötigt.
Über das Exchange Management Cmd-Let New-MailboximportRequest wird der Import einer PST-Datei vorgenommen. Wird der Parameter -isarchive verwendet, werden die Daten in das Archiv der Mailbox importiert, ohne Angabe dieses Parameters wird der Inhalt in die Exchange Mailbox importiert. Der Parameter -FilePath gibt den Speicherort der PST-Datei an. Dies kann zum Beispiel wie folgt aussehen: \\Server\FileShare\Dateiname.pst. Der Parameter -Mailbox beinhaltet den Exchange Alias der Zielmailbox. Über den Parameter -TargetRootfolder wird bei Bedarf ein bestimmter Ordner angelegt unter dem alle Daten aus der PST inklusive der Ordnerstruktur angelegt werden.
Wie man hier sieht, wird der Import nicht direkt gestartet, sondern gequeued. Über das Exchange Cmd-Let Get-MailboxImportRequest können alle Requests und der jeweilige Status abgerufen werden.
Über das Exchange Cmd-Let Remove-MailboxImportRequest können die bereits durchgeführten ImportRequests bei Bedarf gelöscht werden.
Um diesen Prozess zu automatisieren, muss lediglich eine Input-Datei erstellt werden, in der alle PST-Dateien und der jeweilige Exchange Alias pro Zeile aufgelistet sind. Am einfachsten ist es, wenn alle PST-Dateien im gleichen Verzeichnis/Share zur Verfügung gestellt werden.
Beispiel Inputdatei:
a.kapteina,kapteina.pst
user2,user2.pst
user3,user3.pst
Wie kann via Skript dafür gesorgt werden, dass der jeweilige Benutzer über den Verlauf der Importierung bzw. über den Abschluß informiert wird?
Über das Cmd-Let Send-MailMessage:
--------------------------------- Beispielcode ----------------------------------------------------------------------------------
$data = get-content inputfile.txt
$emailbody = get-content emailbody.txt | out-string
$utf8 = New-Object System.Text.utf8encoding
$user=$data[$index].split(",")
$MailboxUser = get-mailbox $user[0]
$YourFilePath = "\\Server\C$\Share\" + $User[1]
New-MailboxImportRequest -isarchive -FilePath $YourFilePath -Mailbox $user[0] -TargetRootfolder Import
Send-MailMessage -From administrator@acme.com -To $MailboxUser.PrimarySmtpAddress -encoding $utf8 -SUBJECT "Ihre PST-Datei wurde in Ihr Exchange Archiv importiert" -body $emailbody -smtpserver SMTPServer
------------------------------ Beispielcode Ende --------------------------------------------------------------------------------
Damit der Emailversand auch erfolgreich funktionieren kann, muss ein Receive Connector auf dem Server SMTPServer angelegt werden, der anonymen Zugriff für eine ausgewählte IP Adresse gestattet. Der Absender wird gegenüber der GAL aufgelöst, wenn der Receive Connector auf "Externally secured" eingestellt wird.