Verwenden von PowerShell zum Verschieben von Postfächern
Sie können PowerShell verwenden, um Postfächer zusätzlich zum Exchange Admin Center (EAC) zu verschieben.
Verschieben von lokalen Postfächern in ein Exchange Online organization
Führen Sie die folgenden Schritte aus, um ein lokales Postfach mithilfe von PowerShell in Exchange Online zu verschieben:
Stellen Sie eine Verbindung mit Exchange Online PowerShell her: Starten Sie PowerShell als Administrator, und stellen Sie eine Verbindung mit Exchange Online PowerShell her, indem Sie den folgenden Befehl ausführen:
PS C:\> Connect-ExchangeOnline
Suchen der Remoteserver-URL des Migrationsendpunkts: Rufen Sie die Remoteserver-URL mithilfe des Cmdlets Get-MigrationEndpoint ab.
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Die folgende Ausgabe wird angezeigt:
PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
Hinweis
Der RemoteServer-Wert in der obigen Befehlssyntaxausgabe wird durch Ausführen des Hybridkonfigurations-Assistenten (HCW) generiert.
Kopieren Sie den RemoteServer-Wert so, wie Sie ihn im nächsten Teil benötigen.
Hinweis
Der Wert für den RemoteServer, der in der obigen Ausgabebefehlssyntax angezeigt wird, wird generiert, wenn der Benutzer auf der Seite Hybridtopologie die Option Exchange Modern HybridTopology verwenden auswählt.
Erstellen einer neuen Verschiebungsanforderung zum Verschieben von primären und Archivpostfächern in Exchange Online mithilfe von PowerShell
Geben Sie die folgenden Details ein, um eine neue Verschiebungsanforderung zu erstellen, um das primäre Postfach und das Archivpostfach in Exchange Online zu verschieben:
- Identität: Postfachname oder E-Mail-Adresse.
- RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
- TargetDeliveryDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- RemoteCredential: Lokales Administratorkonto mit Berechtigungen.
Nach dem Ausführen des Befehls wird eine Anmeldeanforderung für Anmeldeinformationen angezeigt.
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Geben Sie das Kennwort der lokalen Anmeldeinformationen (RemoteCredential) ein.
Verschieben mehrerer Postfächer in Exchange Online mithilfe von PowerShell
Erstellen Sie eine CSV-Datei mit dem Namen Users.csv , und speichern Sie sie im Verzeichnis C:\migration.
Öffnen Sie die CSV-Datei, nennen Sie die Headerspalte EmailAddress, und füllen Sie alle Postfächer aus, die Sie in Exchange Online verschieben möchten.
Kopieren Sie das folgende Skript, und ändern Sie die ersten 3 Zeilen. Führen Sie anschließend das Skript aus.
$Mailboxes = Import-Csv "C:\Migration\Users.csv" $RemoteHostName = "mail.contoso.com" $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com" $OnPremCred = (Get-Credential) # Move mailboxes in CSV file to Exchange Online foreach ($Mailbox in $Mailboxes) { $params = @{ Identity = $mailbox.EmailAddress Remote = $true RemoteHostName = $RemoteHostName TargetDeliveryDomain = $TargetDeliveryDomain RemoteCredential = $OnPremCred } New-MoveRequest @params }
Verschieben des primären Postfachs nur in Exchange Online mithilfe von PowerShell
Es gibt ein Szenario, in dem sich der Speicherort des Archivpostfachs in Exchange Online und der primäre Postfachspeicherort in Exchange lokal befindet, und Sie führen den folgenden Befehl aus:
$Mailboxes = Import-Csv "C:\Migration\Users.csv" $RemoteHostName = "mail.contoso.com" $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com" $OnPremCred = (Get-Credential) # Move mailboxes in CSV file to Exchange Online foreach ($Mailbox in $Mailboxes) { $params = @{ Identity = $mailbox.EmailAddress Remote = $true RemoteHostName = $RemoteHostName TargetDeliveryDomain = $TargetDeliveryDomain RemoteCredential = $OnPremCred } New-MoveRequest @params }
Das Ergebnis ist, dass Sie die folgende Fehlermeldung erhalten, die Teil der größeren Befehlssyntax ist, die nach der Fehlermeldung angezeigt wird:
You must specify the PrimaryOnly parameter Target user ‘XXXXXX’ already has an archive mailbox.
PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential) You must specify the PrimaryOnly parameter. Target user 'Maisha Lee' already has an archive mailbox. + CategoryInfo : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022 7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management. Migration.MailboxReplication.MoveRequest.NewModernMoveRequest + PSComputerName : outlook.office365.com
Sobald die Fehlermeldung angezeigt wird, führen Sie die folgenden Schritte aus:
Fügen Sie den
-PrimaryOnly
Parameter zur vorherigen Befehlssyntax hinzu, um den Fehler zu beheben, wenn Sie eine neue Verschiebungsanforderung erstellen, um das primäre Postfach nur in Exchange Online zu verschieben.Geben Sie die folgenden Details ein:
- Identität: Postfachname oder E-Mail-Adresse.
- RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
- PrimaryOnly: Wert leer lassen.
- TargetDeliveryDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- RemoteCredential: Lokales Administratorkonto mit Berechtigungen.
Nach dem Ausführen des Befehls für eine neue Verschiebungsanforderung wird eine Anmeldeanforderung für Anmeldeinformationen angezeigt, wie in der folgenden Befehlssyntax gezeigt:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Geben Sie das Kennwort der lokalen Anmeldeinformationen (RemoteCredential) ein.
Nur Archivpostfach mithilfe von PowerShell in Exchange Online verschieben
PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential) You must specify the PrimaryOnly parameter. Target user 'Maisha Lee' already has an archive mailbox. + CategoryInfo : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022 7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management. Migration.MailboxReplication.MoveRequest.NewModernMoveRequest + PSComputerName : outlook.office365.com
- Fügen Sie den
ArchiveOnly
Parameter zur vorherigen Befehlssyntax hinzu, um den Fehler zu beheben, wenn Sie eine neue Verschiebungsanforderung erstellen, um das Archivpostfach nur in Exchange Online zu verschieben. - Geben Sie die folgenden Details ein:
- Identität: Postfachname oder E-Mail-Adresse.
- RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
- ArchiveOnly: Wert leer lassen.
- TargetDeliveryDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- RemoteCredential: Lokales Administratorkonto mit Berechtigungen.
Nach dem Ausführen des Befehls für eine neue Verschiebungsanforderung wird eine Anmeldeanforderung für Anmeldeinformationen angezeigt, wie in der folgenden Befehlssyntax gezeigt:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Geben Sie das Kennwort der lokalen Anmeldeinformationen (RemoteCredential) ein.
- Fügen Sie den
Abrufen von status zum Verschieben von Postfächern
Rufen Sie die status der Postfachverschiebungsanforderung mithilfe des Cmdlets Get-MoveRequest ab.
Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
Führen Sie den folgenden Befehl aus, um alle Postfachverschiebungsanforderungen abzurufen:
Get-MoveRequest | Get-MoveRequestStatistics
Die Ausgabe zeigt die Postfachverschiebung status als abgeschlossen status, wie im folgenden Screenshot gezeigt:
Wenn dies nicht der Fall ist und Sie die Anforderung zum Verschieben des Postfachs nicht abschließen können, können Sie die Verschiebungsanforderung anhalten und fortsetzen.
Verschieben von Exchange Online Postfächern in eine lokale organization
Führen Sie die folgenden Schritte aus, um ein Exchange Online Postfach mithilfe von PowerShell in die lokale organization zu verschieben:
Stellen Sie eine Verbindung mit Exchange Online PowerShell her: Starten Sie PowerShell als Administrator, und stellen Sie eine Verbindung mit Exchange Online PowerShell her, indem Sie den folgenden Befehl ausführen:
PS C:\> Connect-ExchangeOnline
Hinweis
Sie ziehen das Exchange Online Postfach nicht in die lokale Umgebung. Tatsächlich pushen Sie das Exchange Online Postfach an die lokale Umgebung. Aus diesem Grund müssen Sie eine Verbindung mit Exchange Online herstellen und die Befehle aus Exchange Online PowerShell ausführen.
Suchen der Remoteserver-URL des Migrationsendpunkts: Rufen Sie die Remoteserver-URL mithilfe des Cmdlets Get-MigrationEndpoint ab.
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Die folgende Ausgabe wird angezeigt:
Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : mail.contoso.com
Hinweis
Der RemoteServer-Wert in der obigen Befehlssyntaxausgabe wird durch Ausführen des Hybridkonfigurations-Assistenten (HCW) generiert.
Kopieren Sie den Wert der RemoteServer-URL so, wie Sie ihn im nächsten Teil benötigen.
Erstellen einer neuen Verschiebungsanforderung zum Verschieben von primären und Archivpostfächern aus Exchange Online mithilfe von PowerShell
Geben Sie beim Erstellen einer neuen Verschiebungsanforderung die folgenden Details ein, um das primäre Postfach und das Archivpostfach aus Exchange Online zu verschieben:
- Identität: Postfachname oder E-Mail-Adresse.
- RemoteTargetDatabase: Lokale Exchange-Postfachdatenbank.
- RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
- TargetDeliveryDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- RemoteCredential: Lokales Administratorkonto mit Berechtigungen.
Der Auszuführende Befehl zum Erstellen einer neuen Verschiebungsanforderung lautet:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
Geben Sie das Kennwort der lokalen Anmeldeinformationen (RemoteCredential) für die Anmeldeanforderung für Anmeldeinformationen ein, die wie in der folgenden Befehlssyntax angezeigt wird, sobald der Befehl ausgeführt wird:
PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator) DisplayName Status TargetDatabase ----------- ------ -------------- Jordy Twin Queued
Nachdem Sie den vorherigen Befehl ausgeführt haben, der das Kennwort der lokalen Anmeldeinformationen enthält, können die folgenden Fehler angezeigt werden:
- Ein Empfänger mit postfach-GUID wurde nicht gefunden.
- Die Archiv-GUIDs für Quell- und Zielempfänger stimmen nicht überein
Verschieben nur des primären Postfachs aus Exchange Online mithilfe von PowerShell
Wenn sich die Speicherorte des primären Postfachs und des Archivpostfachs in Exchange Online befinden und Sie nur das primäre Postfach verschieben möchten, fügen
-PrimaryOnly
Sie dem Befehl, den Sie zum Erstellen einer neuen Verschiebung ausführen, parameter und-ArchiveDomain
hinzu, und geben Sie in der Befehlssyntax die folgenden Details ein:- Identität: Postfachname oder E-Mail-Adresse.
- Ausgehend: Wert leer lassen.
- RemoteTargetDatabase: Lokale Exchange-Postfachdatenbank.
- RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
- PrimaryOnly: Wert leer lassen.
- ArchiveDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- TargetDeliveryDomain: Primäre SMTP-Domäne, die für die Exchange Online organization Postfächer verwendet wird.
- RemoteCredential: Lokales Administratorkonto mit Berechtigungen.
Der Auszuführende Befehl zum Erstellen einer neuen Verschiebungsanforderung lautet:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
Nach dem Ausführen des Befehls wird eine Anmeldeanforderung für Anmeldeinformationen angezeigt, wie in der folgenden Befehlssyntax gezeigt:
PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator) DisplayName Status TargetDatabase ----------- ------ -------------- Jordy Twin Queued
Geben Sie das Kennwort der lokalen Anmeldeinformationen (RemoteCredential) ein.
Abrufen von status zum Verschieben von Postfächern
Rufen Sie die status der Postfachverschiebungsanforderung mithilfe des Cmdlets Get-MoveRequest ab.
PS C:\> Get-MoveRequest -Identity "Jordy.Twin@contoso.com" | Get-MoveRequestStatistics | ft DisplayName,StatusDetail,TotalMailboxSize,TotalArchiveSize,PercentComplete DisplayName StatusDetail TotalMailboxSize TotalArchiveSize PercentComplete ----------- ------------ ---------------- ---------------- --------------- Jordy Twin Completed 231.6 MB (242,877,775 bytes) 0 B (0 bytes) 100
Die Postfachverschiebung ist abgeschlossen. Wenn dies nicht der Fall ist und Sie die Anforderung zum Verschieben des Postfachs nicht abschließen können, können Sie die Verschiebungsanforderung anhalten und fortsetzen.
Informationen zum Implementieren des nächsten Schritts zum Entfernen der abgeschlossenen migrierten Batches finden Sie unter Entfernen abgeschlossener Migrationsbatches.