Mailbox in eine andere Datenbank verschieben (2/3)
Sei es das Deaktivieren per PowerShell oder das Verschieben einer Mailbox in eine andere Datenbank: In der 3-teiligen Serie „Exchange und PowerShell – IDM und E-Mail“ beschreiben wir, wie Sie häufige E-Mail-Probleme einfach mit der PowerShell lösen können.
Die PS-Skripte sind unabhängig von unserer IAM-Lösung, dem IDM-Portal, ersparen aber in Kombination mit diesem der IT eine Menge Arbeit.
Haben Sie vor Postfächer zu deaktivieren und in eine andere Datenbank zu verschieben? Dann sollten Sie das Postfach zunächst über eine Migration in die gewünschte Datenbank verschieben. In unserem letzten Artikel haben wir uns angesehen, wie Sie Exchange Mailboxen deaktivieren können. Heute erklären wir Ihnen, wie Sie ein Postfach in eine andere Datenbank verschieben.
Index
Exchange Postfach via PowerShell in andere Datenbank migrieren
Das Vorgehen kann in zwei aufeinanderfolgenden Schritten beschrieben werden. Als erstes benötigen Sie eine PowerShell-Session nach Exchange und im zweiten Schritt läuft der eigentliche Verschiebevorgang des Postfachs ab. Mit dem IDM-Portal diese Vorgänge auf 2 bis 3 Klicks reduziert und delegiert werden. Der Abteilungsleiter oder HR-Kollege wird das Skript selbst nie sehen und kann durch beschränkte Obeflächen und einen Security-Layer auch keine Fehler machen.
Für die manuelle Vorgehensweise gilt gehen Sie wie folgt vor:
PowerShell Session für Exchange aufbauen
Um remote auf den Exchange Server zugreifen zu können, benötigen Sie eine PowerShell Session. Den Server erreichen Sie über folgende URL: https://<Name oder IP des Servers>/PowerShell
1 |
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://exc01/PowerShell/ -Authentication Kerberos |
Um nicht die komplette PS-Session importieren zu müssen, geben Sie die benötigten Cmdlets „New-MoveRequest“, „Get-MoveRequest“ und „Remove-MoveRequest“ explizit an:
1 |
Import-PSSession -Session $session -CommandName New-MoveRequest, Get-MoveRequest, Remove-MoveRequest |
Exchange-Postfach verschieben mit „New-MoveRequest“
Um mit dem Verschieben des Postfaches beginnen zu können, wird das Cmdlet „New-MoveRequest“ verwendet. Diesem wird die Identity der Mailbox bzw. des Mailusers und die Zieldatenbank übergeben.
Die Identity kann z.B. der DistinguishedName, die GUID, der UPN usw. sein (weitere Informationen zum PowerShell Cmdlet finden sie bei Microsoft)
1 2 3 |
$newDatabase = "PF deaktiviert" $alias = "maximilian.muster" New-MoveRequest -Identity $alias -TargetDatabase $newDatabase -Confirm:$False |
Um bei diesem Befehl nicht zu einer Bestätigung aufgefordert zu werden, setzen Sie der Parameter Confirm auf False.
Mit „Get-MoveRequest“ lässt sich der Status des Migrationsprozesses nachverfolgen. Hier ist ein Beispiel, wie Sie sich alle 5 Sekunden den Status ausgeben lassen kann:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$request = Get-MoveRequest -Identity $alias $status = "new" Do { Sleep 5 Try{ $request = Get-MoveRequest -Identity $alias $status = $request.status } Catch{ $status = "Completed" } $status } While $status-ne "Completed" |
Sollten Sie ein altes Exchange 2010 nutzen, müssen Sie das Cmdlet „Remove-MoveRequest“ für abgeschlossene Verschiebeprozesse verwenden, um das InTransit-Flag aus dem Postfach zu entfernen:
1 |
Remove-MoveRequest -Identity$alias-Confirm:$False |
Bei neueren Exchange-Versionen ist dies nicht erforderlich. Dort wird „Remove-MoveRequest“ nur zum Abbrechen eines Verschiebeprozesses verwendet. Daher müssen Sie im oberen Beispiel der Status-Abfrage ein Try-Catch verwenden, da der Verschiebeprozess nach Abschluss automatisch gelöscht wird.
Zum Schluss schließen Sie die PS-Session wieder:
1 |
Remove-PSSession$session |
PS-Skript: Mailbox in eine andere Datenbank verschieben
Hier noch einmal das vollständige PowerShell-Skript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://exc01/PowerShell/ -Authentication Kerberos Import-PSSession-Sessio$session-CommandName New-MoveRequest, Get-MoveRequest,Remove-MoveRequest $newDatabase = "PF deaktiviert" $alias = "maximilian.muster" New-MoveRequest -Identity $alias -TargetDatabase $newDatabase -Confirm:$False $request = Get-MoveRequest -Identity $alias $status = "new" Do { Sleep 5 Try{ $request = Get-MoveRequest -Identity $alias $status = $request.status } Catch{ $status = "Completed" } $status } While ($status -ne "Completed" ) #Remove-MoveRequest -Identity $alias -Confirm:$False Remove-PSSession, $session |
Automatisiertes Verschieben von Postfächern mit dem IDM-Portal – auch ohne IT
Ein automatisiertes Verschieben ist mit dem IDM-Portal möglich, z.B. um die Mailbox eines deaktivierten Benutzers zu migrieren. Grundsätzlich ist die Verwaltung von Benutzerkonten mit Start- und Enddatum in AD/M365 recht schwierig. Da Sie aber mit PowerShell problemlos Mailboxen in Ihrem Exchange zuweisen können, hilft Ihnen das IDM-Portal dabei, dies auch zeitgesteuert für Benutzer und Ihre Mailboxen (gemäß den Unternehmensrichtlinien) durchzuführen.
Da die Verwaltung von Benutzerkonten viel Arbeit für die IT bedeutet, kann diese mit dem IDM-Portal auch von Kollegen, Helpdesk oder Managern übernommen werden, z.B. das
- Löschen oder Inaktivsetzen eines Kontos bei geplanter Abwesenheit
- das Deaktivieren der Mailbox.
Mit dem IDM-Portal und seinen Automatisierungsfuktionen können Sie nun Prozesse automatisieren und bestimmte Aufgaben vorab bearbeiten.
Darüber hinaus haben Sie die Möglichkeit, die Pflege dieser Mitarbeiterkonten zu delegieren. Die Benutzerfreundlichkeit des IDM-Portals und der direkte Zugriff auf das AD und Entra ID beschleunigen und erleichtern die Arbeit Ihrer IT-Abteilung.
Haben Sie konkrete Fragen zu Exchange und Exchange online und der Verbindung mit dem IDM-Portal?