PowerShell を使用してメールボックスを移動する
PowerShell を使用すると、Exchange 管理 センター (EAC) に加えてメールボックスを移動できます。
オンプレミスのメールボックスをExchange Online organizationに移動する
PowerShell を使用してオンプレミスのメールボックスをExchange Onlineに移動するには、次の手順を実行します。
Exchange Online PowerShell に接続する: 管理者として PowerShell を起動し、次のコマンドを実行して PowerShell Exchange Online接続します。
PS C:\> Connect-ExchangeOnline
移行エンドポイントのリモート サーバー URL の検索: Get-MigrationEndpoint コマンドレットを使用してリモート サーバー URL を取得します。
Get-MigrationEndpoint | Format-List Identity, RemoteServer
次の出力が表示されます。
PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
注:
前のコマンド構文出力の RemoteServer 値は、 ハイブリッド構成ウィザード (HCW) を実行して生成されます。
次のパートで必要に応じて RemoteServer 値をコピーします。
注:
前の出力コマンド構文に表示されている RemoteServer の値は、ユーザーが [ハイブリッド トポロジ] ページで [Exchange Modern Hybrid Topology を使用する] を選択したときに生成されます。
PowerShell を使用してプライマリ メールボックスとアーカイブ メールボックスをExchange Onlineに移動する新しい移動要求を作成する
次の詳細を入力して、プライマリ メールボックスとアーカイブ メールボックスをExchange Onlineに移動する新しい移動要求を作成します。
- ID: メールボックス名または電子メール アドレス。
- RemoteHostName: 手順 2 でコピーしたリモート サーバー。
- TargetDeliveryDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- RemoteCredential: 特権を持つオンプレミス管理者アカウント。
コマンドを実行すると、資格情報サインイン要求が表示されます。
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
オンプレミスの資格情報 (RemoteCredential) のパスワードを入力します。
PowerShell を使用して複数のメールボックスをExchange Onlineに移動する
Users.csvという名前の CSV ファイル を 作成し、 ディレクトリ C:\migration に配置します。
CSV ファイルを開き、ヘッダー列に EmailAddress という名前を付け、Exchange Onlineに移動するすべてのメールボックスを入力します。
次のスクリプトをコピーし、最初の 3 行を変更します。 その後、スクリプトを実行します。
$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 }
PowerShell を使用してプライマリ メールボックスのみをExchange Onlineに移動する
アーカイブ メールボックスの場所がExchange Onlineにあり、プライマリ メールボックスの場所が Exchange オンプレミスにあり、次のコマンドを実行するシナリオがあります。
$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 }
その結果、エラー メッセージの後に表示される大きなコマンド構文の一部である次のエラー メッセージが表示されます。
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
エラー メッセージが表示されたら、次の手順を実行します。
-PrimaryOnly
パラメーターを前のコマンド構文に追加して、プライマリ メールボックスのみをExchange Onlineに移動する新しい移動要求を作成するときにエラーを解決します。次の詳細を入力します。
- ID: メールボックス名または電子メール アドレス。
- RemoteHostName: 手順 2 でコピーしたリモート サーバー。
- PrimaryOnly: 値を空のままにします。
- TargetDeliveryDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- RemoteCredential: 特権を持つオンプレミス管理者アカウント。
新しい移動要求に対してコマンドを実行すると、次のコマンド構文に示すように資格情報サインイン要求が表示されます。
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
オンプレミスの資格情報 (RemoteCredential) のパスワードを入力します。
PowerShell を使用してアーカイブ メールボックスのみをExchange Onlineに移動する
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
- 前のコマンド構文に
ArchiveOnly
パラメーターを追加して、アーカイブ メールボックスのみをExchange Onlineに移動する新しい移動要求を作成するときにエラーを解決します。 - 次の詳細を入力します。
- ID: メールボックス名または電子メール アドレス。
- RemoteHostName: 手順 2 でコピーしたリモート サーバー。
- ArchiveOnly: 値を空のままにします。
- TargetDeliveryDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- RemoteCredential: 特権を持つオンプレミス管理者アカウント。
新しい移動要求に対してコマンドを実行すると、次のコマンド構文に示すように、資格情報サインイン要求が表示されます。
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
オンプレミスの資格情報 (RemoteCredential) のパスワードを入力します。
- 前のコマンド構文に
メールボックスの移動状態を取得する
Get-MoveRequest コマンドレットを使用して、メールボックス移動要求の状態を取得します。
Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
次のコマンドを実行して、すべてのメールボックス移動要求を取得します。
Get-MoveRequest | Get-MoveRequestStatistics
次のスクリーンショットに示すように、出力にはメールボックスの移動状態が 完了 状態として表示されます。
そうではなく、メールボックスの移動要求を完了できない場合は、移動要求を一時停止して再開できます。
Exchange Onlineメールボックスをオンプレミスのorganizationに移動する
PowerShell を使用してExchange Onlineメールボックスをオンプレミスのorganizationに移動するには、次の手順を実行します。
Exchange Online PowerShell に接続する: 管理者として PowerShell を起動し、次のコマンドを実行して PowerShell Exchange Online接続します。
PS C:\> Connect-ExchangeOnline
注:
Exchange Online メールボックスをオンプレミスにプルしていません。 実際、Exchange Online メールボックスをオンプレミスにプッシュしています。 そのため、Exchange Onlineに接続し、Exchange Online PowerShell からコマンドを実行する必要があります。
移行エンドポイントのリモート サーバー URL の検索: Get-MigrationEndpoint コマンドレットを使用してリモート サーバー URL を取得します。
Get-MigrationEndpoint | Format-List Identity, RemoteServer
次の出力が表示されます。
Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : mail.contoso.com
注:
前のコマンド構文出力の RemoteServer 値は、 ハイブリッド構成ウィザード (HCW) を実行して生成されます。
次のパートで必要に応じて 、RemoteServer URL の値をコピーします。
PowerShell を使用してプライマリ メールボックスとアーカイブ メールボックスをExchange Onlineから移動する新しい移動要求を作成する
プライマリ メールボックスを移動し、Exchange Onlineからメールボックスをアーカイブする新しい移動要求の一部として、次の詳細を入力します。
- ID: メールボックス名または電子メール アドレス。
- RemoteTargetDatabase: Exchange オンプレミスメールボックス データベース。
- RemoteHostName: 手順 2 でコピーしたリモート サーバー。
- TargetDeliveryDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- RemoteCredential: 特権を持つオンプレミス管理者アカウント。
新しい移動要求を作成するために実行するコマンドは次のとおりです。
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
コマンドを実行すると、次のコマンド構文に示すように表示される資格情報サインイン要求のオンプレミス資格情報 (RemoteCredential) のパスワードを入力します。
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
オンプレミスの資格情報のパスワードを含む上記のコマンドを実行すると、次のエラーが発生する可能性があります。
- メールボックス GUID を持つ受信者が見つかりません
- ソースとターゲットの受信者のアーカイブ GUID が一致しない
PowerShell を使用してプライマリ メールボックスのみをExchange Onlineから移動する
プライマリ メールボックスとアーカイブ メールボックスの場所がExchange Onlineにあり、プライマリ メールボックスのみを移動する場合は、新しい移動を作成するために実行するコマンドに
-PrimaryOnly
パラメーターと-ArchiveDomain
パラメーターを追加し、コマンド構文で次の詳細を入力します。- ID: メールボックス名または電子メール アドレス。
- 送信: 値を空のままにします。
- RemoteTargetDatabase: Exchange オンプレミスメールボックス データベース。
- RemoteHostName: 手順 2 でコピーしたリモート サーバー。
- PrimaryOnly: 値を空のままにします。
- ArchiveDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- TargetDeliveryDomain: Exchange Online organization メールボックスに使用されるプライマリ SMTP ドメイン。
- RemoteCredential: 特権を持つオンプレミス管理者アカウント。
新しい移動要求を作成するために実行するコマンドは次のとおりです。
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
コマンドを実行すると、次のコマンド構文に示すように資格情報サインイン要求が表示されます。
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
オンプレミスの資格情報 (RemoteCredential) のパスワードを入力します。
メールボックスの移動状態を取得する
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
メールボックスの移動が完了します。 そうではなく、メールボックスの移動要求を完了できない場合は、移動要求を一時停止して再開できます。
完了した移行バッチを削除する次の手順を実装するには、「 完了した移行バッチを削除する」を参照してください。