Zieht ein User in einen andere Standort um, wird meißt auch sein Postfach mit verschoben. Dies kann man nun entweder händisch machen, oder über die Mangement Console, was relativ unschön ist, da die Sitzung am Server offen bleiben muss.
Schöner wäre es doch, wenn man für das moven der Mailbox einen geplante Task anlegt, der das Postfach oder auch mehrere Zeitgerecht verschiebt und den Admin dann auch noch per eMail über diesen Vorgang informiert.
Um dies nun einzurichten, muss als ersten ein PowerShell script erstellt werden. Diese enden üblicherweise auf .ps1 können aber auch jede andere beliebige Endung tragen. In dieses Script werden dann die auszuführenden Befehle aufgenommen.
Move-Mailbox
Get-Mailbox "Max Mustermann" |Move-Mailbox -TargetDatabase "Exhsrv1StorageGroup 1" -Confirm:$false
Dieser Befehl verschiebt das Postfach von Max Mustermann auf den Exhsrv1 Server in die Speichergruppe StorageGroup 1. Damit dieser Vorgang nicht bestätigt werden muss, wird -Confirm:$false übergeben.
Das Ergebniss muss nun in einer Log-Datei festgehalten werden, die dann später der Admin per eMail bekommt.
Logging aktivieren
Get-Mailbox "Max Mustermann" |Move-Mailbox -TargetDatabase "Exhsrv1StorageGroup 1)" -Confirm:$false | out-file "C:installscriptsmove_max.mustermann.log" -append
Jenachdem wieviel Sie von den Statusinformationen habe möchte, können Sie diese noch filtern
Get-Mailbox "Max Mustermann" |Move-Mailbox -TargetDatabase "Exhsrv1StorageGroup 1)" -Confirm:$false | select DisplayName,SourceServer,SourceDatabase,TargetServer,TargetDatabase,MailboxSize,StartTime,EndTime,StatusCode,StatusMessage | out-file "C:installscriptsmove_max.mustermann.log" -append
SMTP-Versand über die PowerShell
Da die PowerShell nun selbst keine eMails versenden kann, muss das script dazu ergänzt werde.
(Quelle: http://mspowershell.blogspot.com/…)
$SMTPserver = "127.0.0.1" $fileattachment = "C:\install\scripts\move_max.mustermann.log" $from = "postmaster@domain.tld" $to = "admin@domain.tld" $subject = "Move-Mailbox Max Mustermann" $emailbody = "please check the attached file"$mailer = new-object Net.Mail.SMTPclient($SMTPserver) $msg = new-object Net.Mail.MailMessage($from, $to, $subject, $emailbody) $attachment = new-object Net.Mail.Attachment($fileattachment) $msg.attachments.add($attachment) $mailer.send($msg)
Einrichtung des geplante Tasks
Nun kann in der Systemsteuerung ein neue geplanter Task hinzugefügt werden der folgenden Befehl ausführt
C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe -PSConsoleFile "C:Program FilesMicrosoftExchange ServerBinExShell.psc1" -Command " C:installscriptsmove_max.mustermann.ps1
Achten Sie darauf, dass der Task mit den Berechtigungen eines Users ausgeführt wird, der auch Postfächer auf den dafür notwendigen Servern verschieben darf!