Utiliser PowerShell pour déplacer des boîtes aux lettres

Vous pouvez utiliser PowerShell pour déplacer des boîtes aux lettres, en plus du Centre d’Administration Exchange (CAE).

Déplacer des boîtes aux lettres locales vers un Exchange Online organization

Pour déplacer une boîte aux lettres locale vers Exchange Online à l’aide de PowerShell, procédez comme suit :

  1. Connexion à Exchange Online PowerShell : Démarrez PowerShell en tant qu’administrateur et Connectez-vous à Exchange Online PowerShell en exécutant la commande suivante :

    PS C:\> Connect-ExchangeOnline
    
  2. Rechercher l’URL du serveur distant du point de terminaison de migration : obtenez l’URL du serveur distant à l’aide de l’applet de commande Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    La sortie suivante s’affiche :

    PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer
    
    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
    

    Remarque

    La valeur RemoteServer dans la sortie de syntaxe de commande précédente est générée par l’exécution de l’Assistant Configuration hybride (HCW).

  3. Copiez la valeur RemoteServer comme vous en avez besoin dans la partie suivante.

    Remarque

    La valeur de RemoteServer affichée dans la syntaxe de commande de sortie précédente est générée lorsque l’utilisateur sélectionne Utiliser la topologie hybride moderne Exchange dans la page Topologie hybride .

  4. Créer une demande de déplacement pour déplacer des boîtes aux lettres principales et d’archivage vers Exchange Online à l’aide de PowerShell

    • Renseignez les détails suivants pour créer une demande de déplacement pour déplacer la boîte aux lettres principale et la boîte aux lettres d’archivage vers Exchange Online :

      • Identité : nom de la boîte aux lettres ou adresse e-mail.
      • RemoteHostName : serveur distant que vous avez copié à l’étape 2.
      • TargetDeliveryDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • RemoteCredential : compte d’administrateur local avec privilèges.

      Après l’exécution de la commande, une demande de connexion d’informations d’identification apparaît.

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Saisissez le mot de passe des informations d’identification locales (RemoteCredential).

  5. Déplacer plusieurs boîtes aux lettres vers Exchange Online à l’aide de PowerShell

    • Créez un fichier CSV nommé Users.csv et placez-le dans le répertoire C :\migration.

    • Ouvrez le fichier CSV, nommez la colonne d’en-tête EmailAddress et renseignez toutes les boîtes aux lettres que vous souhaitez déplacer vers Exchange Online.

      Capture d’écran montrant le fichier CSV sur lequel sont saisis les détails des boîtes aux lettres à déplacer.

    • Copiez le script suivant et modifiez les 3 premières lignes. Après cela, exécutez le script.

      $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. Déplacer la boîte aux lettres principale uniquement vers Exchange Online à l’aide de PowerShell

    Il existe un scénario dans lequel l’emplacement de la boîte aux lettres d’archivage se trouve dans Exchange Online et l’emplacement de boîte aux lettres principale se trouve dans Exchange sur site, et vous exécutez la commande suivante :

    $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
    
       }
    

    Le résultat est que le message d’erreur suivant s’affiche, qui fait partie de la syntaxe de commande plus large affichée après le message d’erreur :

    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
    

    Une fois que le message d’erreur s’affiche, procédez comme suit :

    • Ajoutez le -PrimaryOnly paramètre à la syntaxe de commande précédente pour résoudre l’erreur lorsque vous créez une demande de déplacement pour déplacer la boîte aux lettres principale uniquement vers Exchange Online.

    • Renseignez les détails suivants :

      • Identité : nom de la boîte aux lettres ou adresse e-mail.
      • RemoteHostName : serveur distant que vous avez copié à l’étape 2.
      • PrimaryOnly : conserver la valeur vide.
      • TargetDeliveryDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • RemoteCredential : compte d’administrateur local avec privilèges.

      Après avoir exécuté la commande pour une nouvelle demande de déplacement, une demande de connexion d’informations d’identification s’affiche comme indiqué dans la syntaxe de commande suivante :

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Saisissez le mot de passe des informations d’identification locales (RemoteCredential).

  7. Déplacer uniquement la boîte aux lettres d’archives vers Exchange Online à l’aide de PowerShell

    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
    
    • Ajoutez le ArchiveOnly paramètre à la syntaxe de commande précédente pour résoudre l’erreur lorsque vous créez une demande de déplacement pour déplacer la boîte aux lettres d’archivage uniquement vers Exchange Online.
    • Renseignez les détails suivants :
      • Identité : nom de la boîte aux lettres ou adresse e-mail.
      • RemoteHostName : serveur distant que vous avez copié à l’étape 2.
      • ArchiveOnly : conserver la valeur vide.
      • TargetDeliveryDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • RemoteCredential : compte d’administrateur local avec privilèges.

    Après avoir exécuté la commande pour une nouvelle demande de déplacement, une demande de connexion d’informations d’identification apparaît, comme indiqué dans la syntaxe de commande suivante :

    New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
    

    Saisissez le mot de passe des informations d’identification locales (RemoteCredential).

  8. Obtenir le status de déplacement de boîte aux lettres

    • Obtenez le status de la demande de déplacement de boîte aux lettres à l’aide de l’applet de commande Get-MoveRequest.

      Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
      
    • Exécutez la commande suivante pour obtenir toutes les demandes de déplacement de boîte aux lettres :

      Get-MoveRequest | Get-MoveRequestStatistics
      

      La sortie montre le déplacement de la boîte aux lettres status comme terminé status, comme illustré dans la capture d’écran suivante :

      Capture dʼécran montrant la commande qui permet à lʼutilisateur dʼobtenir le status de déplacement de boîte aux lettres.

      Si ce n’est pas le cas et que vous ne pouvez pas terminer la demande de déplacement de boîte aux lettres, vous pouvez suspendre et reprendre la demande de déplacement.

Déplacer les boîtes aux lettres Exchange Online vers une organisation locale

Pour déplacer une boîte aux lettres Exchange Online vers l’organisation locale à l’aide de PowerShell, procédez comme suit :

  1. Connexion à Exchange Online PowerShell : Démarrez PowerShell en tant qu’administrateur et Connectez-vous à Exchange Online PowerShell en exécutant la commande suivante :

    PS C:\> Connect-ExchangeOnline
    

    Remarque

    Vous n’extrayez pas la boîte aux lettres d’Exchange Online localement. En fait, vous envoyez la boîte aux lettres d’Exchange Online localement. C’est pourquoi vous devez vous connecter à Exchange Online et exécuter les commandes à partir d’Exchange Online PowerShell.

  2. Rechercher l’URL du serveur distant du point de terminaison de migration : obtenez l’URL du serveur distant à l’aide de l’applet de commande Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    La sortie suivante s’affiche :

    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : mail.contoso.com
    

    Remarque

    La valeur RemoteServer dans la sortie de syntaxe de commande précédente est générée par l’exécution de l’Assistant Configuration hybride (HCW).

  3. Copiez la valeur de l’URL RemoteServer comme vous en avez besoin dans la partie suivante.

  4. Créer une demande de déplacement pour déplacer des boîtes aux lettres principales et d’archivage à partir d’Exchange Online à l’aide de PowerShell

    • Renseignez les détails suivants dans le cadre de la création d’une demande de déplacement pour déplacer la boîte aux lettres principale et la boîte aux lettres d’archivage d’Exchange Online :

      • Identité : nom de la boîte aux lettres ou adresse e-mail.
      • RemoteTargetDatabase : base de données de boîtes aux lettres Exchange sur site.
      • RemoteHostName : serveur distant que vous avez copié à l’étape 2.
      • TargetDeliveryDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • RemoteCredential : compte d’administrateur local avec privilèges.

      La commande à exécuter pour créer une demande de déplacement est la suivante :

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      
    • Renseignez le mot de passe des informations d’identification locales (RemoteCredential) pour la demande de connexion d’informations d’identification qui s’affiche comme indiqué dans la syntaxe de commande suivante une fois la commande exécutée :

      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
      

      Après avoir exécuté la commande précédente qui inclut le mot de passe des informations d’identification locales, vous pouvez obtenir les erreurs suivantes :

      • Impossible de trouver un destinataire qui possède le GUID de boîte aux lettres
      • Les GUID d’archive sur les destinataires source et cible ne correspondent pas
  5. Déplacer uniquement la boîte aux lettres principale d’Exchange Online à l’aide de PowerShell

    • Si les emplacements de boîte aux lettres principale et de boîte aux lettres d’archivage se trouvent dans Exchange Online et que vous souhaitez déplacer uniquement la boîte aux lettres principale, ajoutez -PrimaryOnly des paramètres et -ArchiveDomain à la commande que vous exécutez pour créer un nouveau déplacement et, dans la syntaxe de commande, renseignez les détails suivants :

      • Identité : nom de la boîte aux lettres ou adresse e-mail.
      • OutBound : conserver la valeur vide.
      • RemoteTargetDatabase : base de données de boîtes aux lettres Exchange sur site.
      • RemoteHostName : serveur distant que vous avez copié à l’étape 2.
      • PrimaryOnly : conserver la valeur vide.
      • ArchiveDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • TargetDeliveryDomain : domaine SMTP principal utilisé pour les boîtes aux lettres Exchange Online organization.
      • RemoteCredential : compte d’administrateur local avec privilèges.

      La commande à exécuter pour créer une demande de déplacement est la suivante :

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      

      Après l’exécution de la commande, une demande de connexion d’informations d’identification s’affiche comme indiqué dans la syntaxe de commande suivante :

      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
      

      Saisissez le mot de passe des informations d’identification locales (RemoteCredential).

  6. Obtenir le status de déplacement de boîte aux lettres

    • Obtenez le status de la demande de déplacement de boîte aux lettres à l’aide de l’applet de commande Get-MoveRequest.

      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
      

      Le déplacement de boîte aux lettres est terminé. Si ce n’est pas le cas et que vous ne pouvez pas terminer la demande de déplacement de boîte aux lettres, vous pouvez suspendre et reprendre la demande de déplacement.

Pour implémenter l’étape suivante consistant à supprimer les lots migrés terminés, consultez Supprimer les lots de migration terminés.