Verwenden von PowerShell zum Verschieben von Postfächern

Sie können PowerShell zum Verschieben von Postfächern zusätzlich zum Exchange Admin Center (EAC) verwenden.

Verschieben von lokalen Postfächern in eine Exchange Online organization

Um ein lokales Postfach mithilfe von PowerShell nach Exchange Online zu verschieben, führen Sie die folgenden Schritte aus:

  1. Verbindung mit Exchange Online PowerShell herstellen: 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 des Migrationsendpunkts Remoteserver-URL: 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 vorhergehenden Befehlssyntaxausgabe wird durch Ausführen des Hybridkonfigurations-Assistenten (HCW) generiert.

  3. Kopieren Sie den RemoteServer-Wert nach Bedarf in den nächsten Teil.

    Hinweis

    Der Wert für den RemoteServer, der in der vorhergehenden Befehlssyntax angezeigt wird, wird generiert, wenn der Benutzer auf der Seite Hybridtopologie die Option Moderne Exchange-Hybridtopologie verwenden auswählt.

  4. Erstellen einer neuen Verschiebungsanforderung zum Verschieben von primären und Archivpostfächern nach Exchange Online mithilfe von PowerShell

    • Geben Sie die folgenden Details ein, um eine neue Verschiebungsanforderung zum Verschieben des primären Postfachs und des Archivpostfachs nach Exchange Online zu erstellen:

      • 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 mit den 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 für die lokalen Anmeldeinformationen (RemoteCredential) ein.

  5. Verschieben mehrerer Postfächer nach Exchange Online mithilfe von PowerShell

    • Erstellen Sie eine CSV-Datei mit dem Namen Users.csv und legen Sie sie im Verzeichnis C:\migration ab.

    • Öffnen Sie die CSV-Datei, nennen Sie die Kopfzeilenspalte "EmailAddress", und füllen Sie alle Postfächer aus, die Sie in Exchange Online verschieben möchten.

      Screenshot der CSV-Datei, in die 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 nach 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 den folgenden Befehl ausführen:

    $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 umfassenderen 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 der vorhergehenden Befehlssyntax den -PrimaryOnly Parameter hinzu, um den Fehler zu beheben, wenn Sie eine neue Verschiebungsanforderung erstellen, um nur das primäre Postfach nach 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: Lassen Sie den Wert leer.
      • 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 für die lokalen Anmeldeinformationen (RemoteCredential) ein.

  7. Nur Archivpostfach mithilfe von PowerShell nach 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 der vorhergehenden Befehlssyntax den ArchiveOnly Parameter hinzu, um den Fehler zu beheben, wenn Sie eine neue Verschiebungsanforderung erstellen, um das Archivpostfach nur nach 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: Lassen Sie den Wert leer.
      • 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 für die lokalen Anmeldeinformationen (RemoteCredential) ein.

  8. Abrufen des Status der Postfachverschiebung

    • Rufen Sie den 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 Anforderungen für Postfachverschiebungen abzurufen:

      Get-MoveRequest | Get-MoveRequestStatistics
      

      Die Ausgabe zeigt den Status der Postfachverschiebung als abgeschlossener Status an, wie im folgenden Screenshot dargestellt:

      Screenshot des Befehls, mit dem der Benutzer den Status der Postfachverschiebung abrufen kann

      Wenn dies nicht der Fall ist und Sie den Postfachverschiebungsantrag nicht abschließen können, können Sie den Verschiebungsantrag anhalten und fortsetzen.

Verschieben von Exchange Online-Postfächern in eine lokale organization

Um ein Exchange Online-Postfach mithilfe von PowerShell in die lokale Organisation zu verschieben, führen Sie die folgenden Schritte aus:

  1. Verbindung mit Exchange Online PowerShell herstellen: 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 nach lokal. Tatsächlich verschieben Sie das Exchange Online-Postfach in ein lokales Postfach. Aus diesem Grund müssen Sie eine Verbindung mit Exchange Online herstellen und die Befehle von Exchange Online PowerShell ausführen.

  2. Suchen des Migrationsendpunkts Remoteserver-URL: 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 vorhergehenden Befehlssyntaxausgabe wird durch Ausführen des Hybridkonfigurations-Assistenten (HCW) generiert.

  3. Kopieren Sie den Wert der RemoteServer-URL nach Bedarf in den nächsten Teil.

  4. Erstellen einer neuen Verschiebungsanforderung zum Verschieben von primären und Archivpostfächern von Exchange Online mithilfe von PowerShell

    • Geben Sie die folgenden Details ein, wenn Sie eine neue Verschiebungsanforderung erstellen, um das primäre Postfach und das Archivpostfach von 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, um eine neue Verschiebungsanforderung zu erstellen, 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 ein, die nach dem Ausführen des Befehls wie in der folgenden Befehlssyntax angezeigt 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
      

      Nach dem Ausführen des vorherigen Befehls, der das Kennwort für die lokalen Anmeldeinformationen enthält, können die folgenden Fehlermeldungen angezeigt werden:

      • Empfänger mit Postfach-GUID kann nicht gefunden werden
      • Die Archiv-GUIDs für Quell- und Zielempfänger stimmen nicht überein
  5. Verschieben des einzigen primären Postfachs von 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 Sie dem Befehl, den Sie ausführen, um eine neue Verschiebung zu erstellen, und-Parameter -ArchiveDomain hinzu -PrimaryOnly und geben Sie in der Befehlssyntax die folgenden Details an:

      • Identität: Postfachname oder E-Mail-Adresse.
      • OutBound: Lassen Sie den Wert leer.
      • RemoteTargetDatabase: Lokale Exchange-Postfachdatenbank.
      • RemoteHostName: Der Remoteserver, den Sie in Schritt 2 kopiert haben.
      • PrimaryOnly: Lassen Sie den Wert leer.
      • Archivdomäne: 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, um eine neue Verschiebungsanforderung zu erstellen, 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 mit den Anmeldeinformationen angezeigt, wie in der folgenden Befehlssyntax dargestellt:

      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 für die lokalen Anmeldeinformationen (RemoteCredential) ein.

  6. Abrufen des Status der Postfachverschiebung

    • Rufen Sie den 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
      

      Das Verschieben des Postfachs wird abgeschlossen. Wenn dies nicht der Fall ist und Sie den Postfachverschiebungsantrag nicht abschließen können, können Sie den Verschiebungsantrag anhalten und fortsetzen.

Informationen zum Implementieren des nächsten Schritts zum Entfernen der abgeschlossenen migrierten Batches finden Sie unter Entfernen abgeschlossener Migrationsbatches.