Usare PowerShell per spostare le cassette postali
È possibile usare PowerShell per spostare le cassette postali, oltre a Exchange Amministrazione Center (EAC).
Spostare cassette postali locali in un'organizzazione Exchange Online
Per spostare una cassetta postale locale in Exchange Online tramite PowerShell, seguire questa procedura:
Connettersi a Exchange Online PowerShell: Avviare PowerShell come amministratore e Connettersi a Exchange Online PowerShell eseguendo il comando seguente:
PS C:\> Connect-ExchangeOnline
Trovare l'URL del server remoto dell'endpoint di migrazione: ottenere l'URL del server remoto usando il cmdlet Get-MigrationEndpoint .
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Viene visualizzato l'output seguente:
PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
Nota
Il valore RemoteServer nell'output della sintassi del comando precedente viene generato eseguendo la Configurazione guidata ibrida (HCW).The RemoteServer value in the preceding command syntax output is generated by running Hybrid Configuration Wizard (HCW).
Copiare il valore RemoteServer come necessario nella parte successiva.
Nota
Il valore per RemoteServer visualizzato nella sintassi del comando di output precedente viene generato quando l'utente seleziona Usa topologia ibrida moderna di Exchange nella pagina Topologia ibrida .
Creare una nuova richiesta di spostamento per spostare le cassette postali primarie e di archiviazione in Exchange Online con PowerShell
Compilare i dettagli seguenti per creare una nuova richiesta di spostamento per spostare la cassetta postale primaria e la cassetta postale di archiviazione in Exchange Online:
- Identità: nome della cassetta postale o indirizzo di posta elettronica.
- RemoteHostName: server remoto copiato nel passaggio 2.
- TargetDeliveryDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- RemoteCredential: account amministratore locale con privilegi.
Dopo aver eseguito il comando, viene visualizzata una richiesta di accesso alle credenziali.
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Compilare la password delle credenziali locali (RemoteCredential).
Spostare più cassette postali in Exchange Online usando PowerShell
Creare un file CSV denominato Users.csv e inserirlo nella directory C:\migration.
Aprire il file CSV, denominare la colonna di intestazione EmailAddress e compilare tutte le cassette postali che si desidera spostare in Exchange Online.
Copiare lo script seguente e modificare le prime 3 righe. Successivamente, eseguire lo 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 }
Spostare solo la cassetta postale primaria in Exchange Online usando PowerShell
Esiste uno scenario in cui il percorso della cassetta postale di archiviazione si trova in Exchange Online e il percorso della cassetta postale primaria si trova in Exchange locale ed eseguire il comando seguente:
$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 }
Il risultato è che viene visualizzato il messaggio di errore seguente che fa parte della sintassi del comando più grande visualizzata dopo il messaggio di errore:
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
Dopo aver visualizzato il messaggio di errore, seguire questa procedura:
Aggiungere il
-PrimaryOnly
parametro alla sintassi del comando precedente per risolvere l'errore quando si crea una nuova richiesta di spostamento per spostare la cassetta postale primaria solo in Exchange Online.Compilare i dettagli seguenti:
- Identità: nome della cassetta postale o indirizzo di posta elettronica.
- RemoteHostName: server remoto copiato nel passaggio 2.
- PrimaryOnly: mantieni il valore vuoto.
- TargetDeliveryDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- RemoteCredential: account amministratore locale con privilegi.
Dopo aver eseguito il comando per una nuova richiesta di spostamento, viene visualizzata una richiesta di accesso alle credenziali, come illustrato nella sintassi del comando seguente:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Compilare la password delle credenziali locali (RemoteCredential).
Spostare solo la cassetta postale di archiviazione in Exchange Online usando 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
- Aggiungere il
ArchiveOnly
parametro alla sintassi del comando precedente per risolvere l'errore quando si crea una nuova richiesta di spostamento per spostare la cassetta postale di archiviazione solo in Exchange Online. - Compilare i dettagli seguenti:
- Identità: nome della cassetta postale o indirizzo di posta elettronica.
- RemoteHostName: server remoto copiato nel passaggio 2.
- ArchiveOnly: mantieni il valore vuoto.
- TargetDeliveryDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- RemoteCredential: account amministratore locale con privilegi.
Dopo aver eseguito il comando per una nuova richiesta di spostamento, viene visualizzata una richiesta di accesso alle credenziali, come illustrato nella sintassi del comando seguente:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Compilare la password delle credenziali locali (RemoteCredential).
- Aggiungere il
Ottenere lo stato di spostamento della cassetta postale
Ottenere lo stato della richiesta di spostamento della cassetta postale usando il cmdlet Get-MoveRequest .
Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
Eseguire il comando seguente per ottenere tutte le richieste di spostamento della cassetta postale:
Get-MoveRequest | Get-MoveRequestStatistics
L'output mostra lo stato di spostamento della cassetta postale come Stato completato , come illustrato nello screenshot seguente:
Se non è così e non è possibile completare la richiesta di spostamento della cassetta postale, è possibile sospendere e riprendere la richiesta di spostamento.
Spostare Exchange Online cassette postali in un'organizzazione locale
Per spostare una cassetta postale Exchange Online nell'organizzazione locale tramite PowerShell, seguire questa procedura:
Connettersi a Exchange Online PowerShell: Avviare PowerShell come amministratore e Connettersi a Exchange Online PowerShell eseguendo il comando seguente:
PS C:\> Connect-ExchangeOnline
Nota
Non si esegue il pull della cassetta postale Exchange Online in locale. Si sta infatti eseguendo il push della cassetta postale Exchange Online in locale. Ecco perché è necessario connettersi a Exchange Online ed eseguire i comandi da Exchange Online PowerShell.
Trovare l'URL del server remoto dell'endpoint di migrazione: ottenere l'URL del server remoto usando il cmdlet Get-MigrationEndpoint .
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Viene visualizzato l'output seguente:
Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : mail.contoso.com
Nota
Il valore RemoteServer nell'output della sintassi del comando precedente viene generato eseguendo la Configurazione guidata ibrida (HCW).The RemoteServer value in the preceding command syntax output is generated by running Hybrid Configuration Wizard (HCW).
Copiare il valore dell'URL RemoteServer come necessario nella parte successiva.
Creare una nuova richiesta di spostamento per spostare le cassette postali primarie e di archiviazione da Exchange Online usando PowerShell
Compilare i dettagli seguenti come parte della creazione di una nuova richiesta di spostamento per spostare la cassetta postale primaria e la cassetta postale di archiviazione da Exchange Online:
- Identità: nome della cassetta postale o indirizzo di posta elettronica.
- RemoteTargetDatabase: database delle cassette postali locale di Exchange.
- RemoteHostName: server remoto copiato nel passaggio 2.
- TargetDeliveryDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- RemoteCredential: account amministratore locale con privilegi.
Il comando da eseguire per creare una nuova richiesta di spostamento è:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
Compilare la password delle credenziali locali (RemoteCredential) per la richiesta di accesso alle credenziali visualizzata come illustrato nella sintassi del comando seguente dopo l'esecuzione del comando:
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
Dopo aver eseguito il comando precedente che include la password delle credenziali locali, è possibile ottenere gli errori seguenti:
- Impossibile trovare un destinatario con GUID cassetta postale
- I GUID di archivio nei destinatari di origine e destinazione non corrispondono
Spostare solo la cassetta postale primaria da Exchange Online usando PowerShell
Se i percorsi della cassetta postale primaria e della cassetta postale di archiviazione si trovano in Exchange Online e si desidera spostare solo la cassetta postale primaria, aggiungere
-PrimaryOnly
e-ArchiveDomain
parametri al comando eseguito per creare un nuovo spostamento e nella sintassi del comando immettere i dettagli seguenti:- Identità: nome della cassetta postale o indirizzo di posta elettronica.
- OutBound: mantieni il valore vuoto.
- RemoteTargetDatabase: database delle cassette postali locale di Exchange.
- RemoteHostName: server remoto copiato nel passaggio 2.
- PrimaryOnly: mantieni il valore vuoto.
- ArchiveDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- TargetDeliveryDomain: dominio SMTP primario usato per le cassette postali dell'organizzazione Exchange Online.
- RemoteCredential: account amministratore locale con privilegi.
Il comando da eseguire per creare una nuova richiesta di spostamento è:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
Dopo aver eseguito il comando, viene visualizzata una richiesta di accesso alle credenziali, come illustrato nella sintassi del comando seguente:
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
Compilare la password delle credenziali locali (RemoteCredential).
Ottenere lo stato di spostamento della cassetta postale
Ottenere lo stato della richiesta di spostamento della cassetta postale usando il cmdlet 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
Lo spostamento della cassetta postale viene completato. Se non è così e non è possibile completare la richiesta di spostamento della cassetta postale, è possibile sospendere e riprendere la richiesta di spostamento.
Per implementare il passaggio successivo della rimozione dei batch migrati completati, vedere Rimuovere i batch di migrazione completati.