使用命令介面中的 Prepare-MoveRequest.ps1 指令碼,準備用於跨樹系移動的信箱
適用於:Exchange Server 2013
總結: 瞭解如何使用 Exchange 管理命令介面中的Prepare-MoveRequest.ps1腳本,在 Exchange 2013 中管理跨樹系信箱移動和移轉。
Microsoft Exchange 2013 支援使用 New-MoveRequest 和 New-MigrationBatch Cmdlet 的信箱移動和移轉。 您也可以透過 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 Cmdlet 將目標物件轉換成擁有郵件功能的使用者。
如需使用和撰寫腳本的詳細資訊,請參閱使用 Exchange 管理命令介面編寫腳本。 如需準備跨樹系移動的詳細資訊,請 參閱準備跨樹系移動要求的信箱。
尋找與遠端移動要求相關的其他管理工作嗎? 請參閱 管理內部部署移動。
開始之前有哪些須知?
在下列位置找出腳本: %ExchangeInstallPath%Scripts
若要執行此範例指令碼,您需要具備下列必要條件:
信箱目前所在的 Exchange 來源樹系。 這可以是 Exchange 2010 或 Exchange 2013 信箱。
已安裝 Exchange 2013 的目標樹系 (信箱移動的目標)。
提示
有問題嗎? 在 Exchange 論壇中尋求協助。 瀏覽 Exchange Server 的論壇。
使用 Prepare-MoveRequest.ps1 指令碼準備信箱的跨樹系移動
在目標 Exchange 2013 樹系中執行 Exchange 2013 的伺服器角色上,從 Shell 執行腳本。 腳本會從來源樹系複製信箱屬性。
若要指派遠端樹系網域控制站的特定驗證認證,您必須先執行 Windows PowerShell Get-Credential Cmdlet,並將使用者輸入儲存在暫存變數中。 當您執行 Get-Credential Cmdlet 時,Cmdlet 會要求在向遠端樹系網域控制站驗證期間所使用的帳戶使用者名稱和密碼。 然後,您可以在Prepare-MoveRequest.ps1腳本中使用暫存變數。 如需 Get-Credential Cmdlet 的詳細資訊,請參閱 Get-Credential。
注意事項
呼叫此指令碼時,請確定對本機樹系和遠端樹系使用兩個單獨的認證。
執行下列命令以取得本機樹系和遠端樹系認證。
$LocalCredentials = Get-Credential $RemoteCredentials = Get-Credential
執行下列命令,將認證資訊傳送到 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 指令碼的參數集
參數 | 必要 | 描述 |
---|---|---|
Identity | 必要 |
Identity參數可唯一識別來源樹系中的信箱。 身分識別可以是下列任一項:
|
RemoteForestCredential | 必要 | RemoteForestCredential參數會指定有權從來源樹系 Active Directory 複製資料的系統管理員。 |
RemoteForestDomainController | 必要 | RemoteForestDomainController 參數可指定信箱所在來源樹系中的網域控制站。 |
DisableEmailAddressPolicy | 選用 |
DisableEmailAddressPolicy 參數可指定在目標樹系中建立 MailUser 物件時,是否應停用可電子郵件地址原則 (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 指令碼的數個範例。
範例:啟用單一連結郵件的使用者
此範例在本機樹系中提供了一個已連結的啟用郵件功能的使用者,同時遠端樹系和本機樹系之間存在樹系信任。
執行下列命令以取得本機樹系和遠端樹系認證。
$LocalCredentials = Get-Credential $RemoteCredentials = Get-Credential
執行下列命令,將認證資訊傳遞至 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
範例:管線
如果您提供信箱識別碼的清單,則此範例支援管線。
執行下列指令:
$UserCredentials = Get-Credential
執行下列命令,將認證資訊傳遞至 Prepare-MoveRequest.ps1 腳本中的 RemoteForestCredential 參數。
"IanP@Contoso.com","JoeAn@Contoso.com" | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
範例:使用.csv檔案來大量建立啟用郵件功能的使用者
您可以從來源樹系產生包含信箱識別碼清單的 .csv 檔案,從而可以將此檔案內容以管線傳輸至指令碼,以大量建立啟用郵件功能的目標使用者。
例如,.csv 檔案的內容可以是:
Identity
Ian@contoso.com
John@contoso.com
Cindy@contoso.com
此範例可呼叫 .csv 檔案,以大量建立啟用郵件功能的目標使用者。
執行下列命令以取得遠端樹系認證。
$UserCredentials = Get-Credential
執行下列命令,將認證資訊傳送到 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 //等
0x202, ACCOUNTDISABLE | NORMAL_ACCOUNT
于) - userPrincipalName
如果已設定LinkedMailUser參數,腳本會複製來源物件Sid/masterAccountSid屬性。
LegacyExchangeDN 屬性
呼叫 Update-Recipient Cmdlet 以將目標物件轉換成擁有郵件功能的使用者時,會為啟用郵件的目標使用者產生新的 LegacyExchangeDN 屬性。 此腳本會將目標擁有郵件功能之使用者的 LegacyExchangeDN 屬性複製為 x500 位址,並複製到來源信箱使用者的 proxyAddress 屬性。