シェルの Prepare-MoveRequest.ps1 スクリプトを使用して、フォレスト間のメールボックスの移動を準備する

製品: Exchange Server 2013

概要: Exchange 管理シェルのPrepare-MoveRequest.ps1 スクリプトを使用して、Exchange 2013 でフォレスト間メールボックスの移動と移行を管理する方法について説明します。

Microsoft Exchange 2013 では、 New-MoveRequest および New-MigrationBatch コマンドレットを使用してメールボックスの移動および移行ができます。 Exchange 管理センター (EAC) 経由でメールボックスを移動することもできます。 Exchange 2010 または Exchange 2013 メールボックスをソース Exchange フォレストからターゲット Exchange 2013 フォレストに移動できます。

New-MoveRequest コマンドレットと New-MigrationBatch コマンドレットを実行するには、メール ユーザーが移動先 Exchange フォレストに存在し、最低限必要な Active Directory 属性の集合が設定されている必要があります。

ここで説明するサンプルの Windows PowerShell スクリプトは、メールボックスのユーザーを Exchange 2013 の移動元のフォレストから Exchange 2013 の移動先のフォレストにメールが有効なユーザーとして同期させることで、このタスクをサポートしています。 スクリプトは移動元フォレストのメールボックス ユーザーの Active Directory 属性を移動先フォレストにコピーし、 Update-Recipient コマンドレットを使用して、移動先のオブジェクトをメールが有効なユーザーに変換します。

スクリプトの使用と記述の詳細については、「 Scripting with the Exchange Management Shell」を参照してください。 フォレスト間の移動の準備については、「メールボックスでフォレスト間の移動要求の準備を行う」を参照してください。

リモート移動要求に関連するその他の管理タスクをお探しですか? 「 オンプレミスの移動を管理する」を確認してください

はじめに把握しておくべき情報

  • 次の場所でスクリプトを見つけます: %ExchangeInstallPath%Scripts

  • サンプル スクリプトの実行に必要なものを以下に示します。

    • メールボックスが現在存在する Exchange ソース フォレスト。 これは、Exchange 2010 または Exchange 2013 メールボックスです。

    • メールボックスの移動先となる、Exchange 2013 がインストールされた移動先のフォレスト。

ヒント

問題がある場合は、 Exchange のフォーラムで質問してください。 Exchange Serverのフォーラムにアクセスしてください。

Prepare-MoveRequest.ps1 スクリプトを使用してメールボックスのフォレスト間の移動を準備する

移動先の Exchange 2013 フォレストにおいて、Exchange 2013 を実行しているサーバーの役割上でシェルからスクリプトを実行します。 スクリプトによって移動元のフォレストからメールボックスの属性がコピーされます。

特定の認証資格情報をリモート フォレストのドメイン コントローラーに割り当てるには、まず Windows PowerShell Get-Credential コマンドレットを実行して、ユーザー入力を一時変数に保存します。 Get-Credential コマンドレットを実行すると、リモート フォレストのドメイン コントローラーの電子メール サーバーの認証時に使用されるアカウントのユーザー名とパスワードの入力が求められます。 Prepare-MoveRequest.ps1 スクリプトでは、テンポラリ変数を使用します。 Get-Credential コマンドレットの詳細については、「 Get-Credential」を参照してください。

注:

このスクリプトを呼び出すときは、ローカル フォレストとリモート フォレストに対して 2 つの別の資格情報を使用することを確認してください。

  1. 次のコマンドを実行して、ローカル フォレストとリモート フォレストの資格情報を取得します。

    $LocalCredentials = Get-Credential
    $RemoteCredentials = Get-Credential
    
  2. 以下のコマンドを実行して、Prepare-MoveRequest.ps1 スクリプトの LocalForestCredential パラメーターと RemoteForestCredential パラメーターに資格情報を渡します。

    Prepare-MoveRequest.ps1 -Identity JohnSmith@Fabrikan.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials
    

スクリプトのパラメーター セット

次の表は、スクリプトのパラメーター セットの説明です。

Prepare-MoveRequest.ps1 スクリプトのパラメーター セット

パラメーター 必須 説明
ID 必須 Identity パラメーターは、ソース フォレスト内のメールボックスを一意に識別します。 Identity には次のいずれかを指定できます。
  • 共通名 (CN)
  • Alias
  • proxyAddress プロパティ
  • objectGuid プロパティ
  • DisplayName プロパティ
RemoteForestCredential 必須 RemoteForestCredential パラメーターは、ソース フォレスト Active Directory からデータをコピーするアクセス許可を持つ管理者を指定します。
RemoteForestDomainController 必須 RemoteForestDomainController パラメーターは、メールボックスが存在するソース フォレスト内のドメイン コントローラーを指定します。
DisableEmailAddressPolicy オプション DisableEmailAddressPolicy パラメーターは、ターゲット フォレストで MailUser オブジェクトを作成するときに、Email アドレス ポリシー (EAP) を無効にするかどうかを指定します。

このパラメーターを指定すると、移動先フォレストの EAP は適用されません。

: このパラメーターを指定すると、 MailUser オブジェクトには、ローカル フォレスト ドメインに電子メール アドレス マッピングがスタンプされません。 これは通常 EAP によってスタンプされます。
LinkedMailUser 省略可能 LinkedMailUser スイッチは、リモート フォレスト内のメールボックス ユーザーのローカル フォレストにリンクされた MailUser を作成するかどうかを指定します。

スイッチが入力されると、スクリプトは移動元のメールボックスにリンクした移動先の MailUser オブジェクトを作成します。 スイッチが省略されると、スクリプトは通常の移動先の MailUser オブジェクトを作成します。
LocalForestCredential オプション LocalForestCredential パラメーターは、ターゲット フォレスト Active Directory にデータを書き込むアクセス許可を持つ管理者を指定します。

Active Directory のアクセス許可の問題を回避するために、このパラメーターを明示的に指定することをお勧めします。

リモート フォレストとローカル フォレストに信頼関係が構成されている場合、リモート ユーザー アカウントがローカル フォレストの Active Directory を変更するアクセス許可を有している場合であっても、リモート フォレストのユーザー アカウントをローカル フォレストの資格情報として使用しないでください。
LocalForestDomainController オプション LocalForestDomainController パラメーターは、メールが有効なユーザーが作成されるターゲット フォレスト内のドメイン コントローラーを指定します。

ランダム ドメイン コントローラーが選択された場合に起こりうる、ローカル フォレストのドメイン コントローラーの複製遅延の問題を回避するために、このパラメーターを指定することをお勧めします。
MailboxDeliveryDomain 省略可能 MailboxDeliveryDomain パラメーターは、ソース フォレストの権限のあるドメインを指定して、スクリプトで正しいソース メールボックス ユーザーの proxyAddress プロパティをターゲット メールが有効なユーザーの targetAddress プロパティとして選択できるようにします。

既定では、移動元メールボックス ユーザーのプライマリ SMTP アドレスは、移動先のメールが有効なユーザーの targetAddress プロパティとして設定されます。
OverWriteLocalObject オプション OverWriteLocalObject パラメーターは、Active Directory 移行ツールによって作成されたユーザーに使用されます。 プロパティは、既存のメール連絡先から新たに作成されたメール ユーザーにコピーされます。 ただし、このコピーの後、スクリプトによって、移動元フォレスト ユーザーからも新たに作成されたメール ユーザーにプロパティがコピーされます。
TargetMailUserOU 省略可能 TargetMailuserOU パラメーターは、ターゲット メールが有効なユーザーを作成する組織単位 (OU) を指定します。
UseLocalObject 省略可能 UseLocalObject パラメーターには、作成予定のメールが有効なユーザーと競合するローカル フォレストのオブジェクトが検出された場合に、既存のローカル オブジェクトを要求された移動先のメールが有効なユーザーに変換するかどうかを指定します。

このセクションには、Prepare-MoveRequest.ps1 スクリプトの使用方法の例がいくつか含まれています。

例: 1 名のリンクされたメールが有効なユーザー

この例では、リモート フォレストとローカル フォレストの間に信頼関係がある場合に、1 名のリンクされたメールが有効なユーザーをローカル フォレストに準備します。

  1. 次のコマンドを実行して、ローカル フォレストとリモート フォレストの資格情報を取得します。

    $LocalCredentials = Get-Credential
    $RemoteCredentials = Get-Credential
    
  2. 次のコマンドを実行して、Prepare-MoveRequest.ps1 スクリプトの LocalForestCredential パラメーターと RemoteForestCredential パラメーターに資格情報を渡します。

    Prepare-MoveRequest.ps1 -Identity JamesAlvord@Contoso.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials -LinkedMailUser
    

例: パイプライン処理

メールボックスの ID の一覧を指定すると、この例はパイプライン処理をサポートします。

  1. 次のコマンドを実行します。

    $UserCredentials = Get-Credential
    
  2. 次のコマンドを実行して、資格情報を Prepare-MoveRequest.ps1 スクリプト内の RemoteForestCredential パラメーターに渡します。

    "IanP@Contoso.com","JoeAn@Contoso.com" | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

例: .csv ファイルを使用してメールが有効なユーザーを一括作成する

メールボックス ID の一覧を含む .csv ファイルを移動元のフォレストから生成できます。それにより、このファイルの内容をスクリプトに入力して、移動先のメールが有効なユーザーを一括作成します。

たとえば, .csv ファイルの内容は次のようになります。

Identity
Ian@contoso.com
John@contoso.com
Cindy@contoso.com

この例では, .csv ファイルを呼び出して移動先にメールが有効なユーザーを一括作成します。

  1. 次のコマンドを実行して、リモート フォレストの資格情報を取得します。

    $UserCredentials = Get-Credential
    
  2. 次のコマンドを実行して、資格情報を Prepare-MoveRequest.ps1 スクリプト内の RemoteForestCredential パラメーターに渡します。

    Import-Csv Test.csv | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

移動先のオブジェクトごとのスクリプトの動作

ここでは、移動先オブジェクトのいくつかのシナリオに関連してスクリプトがどのように動作するかを説明します。

移動先のメールが有効なオブジェクトの重複

スクリプトが移動元のメールボックス ユーザーから移動先のメールが有効なユーザーを作成しようとして、ローカルのメールが有効なオブジェクトの重複を検出すると、以下のロジックを使用します。

  • 移動元のメールボックス ユーザーの masterAccountSid 属性が、移動先のオブジェクトのいずれかの objectSid 属性または masterAccountSid 属性に等しい場合。
    • 移動先のオブジェクトがメールが有効でない場合、スクリプトはメールが有効でないオブジェクトからメールが有効なユーザーへの変換をサポートしていないため、エラーを返します。
    • 移動先のオブジェクトがメールが有効な場合、移動先のオブジェクトは重複しています。
  • 移動元のメールボックス ユーザーの proxyAddress プロパティ (smtp/x500 のみ) が移動先のオブジェクトの proxyAddress プロパティ (smtp/x500 のみ) に等しい場合、移動先のオブジェクトは重複しています。

スクリプトは重複するオブジェクトについてユーザーに入力を求めます。

移動先のメールが有効なオブジェクトが、メールが有効なユーザーまたは連絡先の場合、フォレストにまたがる (Identity Lifecycle Management 2007 Service Pack 1 ベースの) グローバル アドレス一覧 (GAL) 同期展開によって作成された可能性が高いです。そして、ユーザーは移動先のメールが有効なオブジェクトをメールボックスの移行に使用するために、UseLocalObject パラメーターを指定してスクリプトを再度実行します。

メールが有効なユーザー

移動先のオブジェクトがメールが有効なユーザーで、スクリプトによって移動元のメールボックス ユーザーから移動先のメールが有効なユーザーに以下の属性がコピーされます。

  • msExchMailboxGUID
  • msExchArchiveGUID
  • msExchArchiveName

LinkedMailUser パラメーターが設定されている場合、スクリプトはソース オブジェクトSid/masterAccountSid 属性をコピーします。

メールが有効な連絡先

移動先のオブジェクトがメールが有効な連絡先の場合、スクリプトは既存の連絡先を削除して、そのすべての属性を新しいメールが有効なユーザーにコピーします。 またスクリプトは次の属性を移動元のメールボックス ユーザーからコピーします。

  • msExchMailboxGUID
  • msExchArchiveGUID
  • msExchArchiveName
  • sAMAccountName
  • userAccountControl (514 //equivalent に 0x202, ACCOUNTDISABLE | NORMAL_ACCOUNT設定)
  • userPrincipalName

LinkedMailUser パラメーターが設定されている場合、スクリプトはソース オブジェクトSid/masterAccountSid 属性をコピーします。

LegacyExchangeDN 属性

移動先のオブジェクトをメールが有効なユーザーに変換するために Update-Recipient コマンドレットが呼ばれると、移動先のメールが有効なユーザーのために新しい LegacyExchangeDN 属性が生成されます。 スクリプトは、移動先のメールが有効なユーザーの LegacyExchangeDN 属性を x500 アドレスとして、移動元のメールボックス ユーザーの proxyAddress プロパティにコピーします。