Kurz gesagt: Einen einzelnen Benutzer nehmen Sie mit Remove-MigrationUser aus seinem Migrationsbatch. Prüfen Sie vorher mit Get-MigrationUser -BatchId, ob der Benutzer im richtigen Batch steckt, und testen Sie mit -WhatIf. Wer nur anhalten will, nimmt in Exchange Online Stop-MigrationUser.
Gilt für Exchange Online sowie Exchange Server 2016, 2019 und Subscription Edition (SE).
Wann man das braucht
Ein Batch ist geplant, und kurz vor dem Start fällt auf: Ein Postfach soll noch nicht umziehen. Zum Beispiel, weil die Person in den Ferien ist oder eine Fachanwendung noch auf das lokale Postfach zugreift. Den ganzen Batch neu anzulegen ist unnötig. Es reicht, diesen einen Benutzer herauszunehmen.
Schritt 1: Benutzer im Batch anzeigen
Verbinden Sie sich mit Exchange Online PowerShell (oder der Exchange Management Shell). Dann listen Sie die Benutzer des Batches auf. Im Beispiel heißt er „Batch-Verkauf“.
Get-MigrationUser -BatchId "Batch-Verkauf"
Schritt 2: Status des Benutzers prüfen
Get-MigrationUser -Identity anna.muster@contoso.com | Get-MigrationUserStatistics
So sehen Sie, ob die Migration für dieses Postfach schon läuft. Ist sie bereits weit fortgeschritten, sprechen Sie das Herausnehmen vorher mit den Betroffenen ab.
Schritt 3: Testlauf, dann entfernen
Erst mit -WhatIf anzeigen lassen, was passieren würde. Danach ohne den Schalter ausführen.
Remove-MigrationUser -Identity anna.muster@contoso.com -WhatIf
Remove-MigrationUser -Identity anna.muster@contoso.com
Der Benutzer steht zuerst im Status „Removing“. Danach zeigt die Liste aus Schritt 1 ihn nicht mehr an.
Stolperstein: nie Get-MigrationUser -Identity in Remove pipen
Findet Get-MigrationUser zur angegebenen Identity nichts – etwa wegen eines Tippfehlers –, liefert der Befehl laut Microsoft alle Migrationsbenutzer zurück. Eine Zeile wie Get-MigrationUser -Identity … | Remove-MigrationUser würde dann jeden Benutzer aus jedem Batch nehmen. Rufen Sie Remove-MigrationUser deshalb direkt mit -Identity auf (Schritt 3) oder übergeben Sie nur vorher gefilterte Einträge (Skript unten).
Mit Sicherheitsnetz: nur aus bestimmten Batches entfernen
Laufen mehrere Batches und Sie wollen sicher sein, dass der Benutzer nur dann herausfällt, wenn er in einem dieser Batches steckt, prüfen Sie das im Skript:
$batches = "Batch-Verkauf", "Batch-Technik"
$benutzer = "anna.muster@contoso.com"
foreach ($batch in $batches) {
$treffer = Get-MigrationUser -BatchId $batch | Where-Object { "$($_.Identity)" -eq $benutzer }
if ($treffer) {
$treffer | Remove-MigrationUser -WhatIf
}
}
Das Skript vergleicht die Identity als Text und gibt den gefundenen Eintrag direkt an Remove-MigrationUser weiter. So trifft es genau den Eintrag in diesem Batch – auch wenn der Benutzer versehentlich in zwei Batches steht. Entfernen Sie -WhatIf erst, wenn die Ausgabe stimmt.
Korrektur zur Fassung von 2023: Die alte Fassung dieses Beitrags schrieb, PowerShell habe keinen Befehl, um einen Benutzer gezielt aus einem Batch zu entfernen. Das stimmt nicht: Microsoft beschreibt Remove-MigrationUser genau dafür. Das Skript von damals verglich zudem ganze Benutzerobjekte mit einer Mailadresse. Ob das trifft, hängt davon ab, wie PowerShell die Objekte umwandelt. Das Skript oben vergleicht deshalb ausdrücklich den Text.
Passend dazu: Exchange Hybrid Mailflow, wenn Mails nach der Migration nicht mehr ankommen, und Shared Mailbox: gesendete Mails einmal im richtigen Ordner.
Häufige Fragen
Entfernen oder nur anhalten?
Remove-MigrationUser nimmt den Benutzer aus dem Batch. Stop-MigrationUser hält dagegen nur die Migration dieses Benutzers im bestehenden Batch an. Laut Microsoft funktioniert der zweite Befehl nur in Exchange Online. Wer dort unsicher ist, hält den Benutzer zuerst an und entscheidet danach.
Wie finde ich Benutzer mit Problemen in einem Batch?
Get-MigrationUser kann zusätzlich nach Status filtern, zum Beispiel nach Failed oder Stopped. So sehen Sie auf einen Blick, welche Postfächer hängen, bevor Sie einzelne herausnehmen. Weitere Werte sind unter anderem Synced, Completed und IncrementalFailed. Die vollständige Liste steht in der Hilfe zu Get-MigrationUser.
Get-MigrationUser -BatchId "Batch-Verkauf" -Status Failed
Kann ich vorher sehen, was der Befehl tut?
Ja. Mit -WhatIf zeigt PowerShell nur an, welcher Benutzer entfernt würde, und ändert nichts. Ohne den Schalter fragt Remove-MigrationUser ohnehin vor dem Entfernen nach. Wer im Skript ohne Rückfrage arbeiten will, schreibt -Confirm:$false – aber erst, wenn der Testlauf mit -WhatIf stimmt.