Freigeben über


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:

  1. 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
    
  2. 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.

  3. 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.

  4. 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.

  5. 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.

      Screenshot: CSV-Datei, in der die Details der zu verschiebenden Postfächer eingegeben werden

    • 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
      
         }
      
  6. 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.

  7. 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.

  8. 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:

      Screenshot: Befehl, mit dem der Benutzer das Verschieben des Postfachs status.

      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:

  1. 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.

  2. 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.

  3. Kopieren Sie den Wert der RemoteServer-URL so, wie Sie ihn im nächsten Teil benötigen.

  4. 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
  5. 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.

  6. 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.