使用命令介面中的 Prepare-MoveRequest.ps1 指令碼,準備用於跨樹系移動的信箱
適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3
上次修改主題的時間: 2016-11-28
Microsoft Exchange Server 2010 支援使用 New-MoveRequest Cmdlet 執行線上信箱移動。您可以將信箱從來源 Exchange 樹系移至目標 Exchange 2010 樹系。
若要執行 New-MoveRequest Cmdlet,目標 Exchange 樹系中必須有郵件使用者,而且郵件使用者必須擁有最低的必要 Active Directory 屬性集。
本主題中描述的範例 Windows PowerShell 指令碼透過將 Exchange 2010、Exchange Server 2007 或 Exchange Server 2003 來源樹系中的郵件使用者作為啟用郵件功能的使用者同步處理到 Exchange 2010 目標樹系,以支援此工作。該指令碼將來源樹系中信箱使用者的 Active Directory 屬性複製到目標樹系,然後使用 Update-Recipient Cmdlet 將目標物件提供給啟用郵件功能的使用者。
如需使用及撰寫指令碼的詳細資訊,請參閱使用 Exchange 管理命令介面撰寫指令碼。如需準備跨樹系移動的詳細資訊,請參閱準備用於跨樹系移動要求的信箱。
要尋找與遠端移動要求相關的其他管理工作嗎?請參閱管理遠端移動要求。
必要條件
在下列位置找到指令碼:Program Files\Microsoft\Exchange Server\V14\Scripts。
若要執行此範例指令碼,您需要具備下列必要條件:
執行 Exchange 2010、Exchange 2007 或 Exchange 2003 的來源樹系 (信箱目前所在樹系)。
已安裝 Exchange 2010 的目標樹系 (信箱移動的目標)。
使用 Prepare-MoveRequest.ps1 指令碼準備信箱的跨樹系移動
從在目標 Exchange 2010 樹系中執行 Exchange 2010 之伺服器角色上的命令介面中執行指令碼。指令碼會從來源樹系複製信箱屬性。
若要指派遠端樹系網域控制站的特定驗證認證,您必須先執行 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 參數可唯一識別來源樹系中的信箱。Identity 可以是下列任何項目:
|
||
RemoteForestCredential |
必要 |
RemoteForestCredential 參數可指定有權從來源樹系 Active Directory 複製資料的系統管理員。 |
||
RemoteForestDomainController |
必要 |
RemoteForestDomainController 參數可指定信箱所在來源樹系中的網域控制站。 |
||
DisableEmailAddressPolicy |
選用 |
DisableEmailAddressPolicy 參數可指定在目標樹系中建立 MailUser 物件時,是否應停用可電子郵件地址原則 (EAP)。 如果指定此參數,則不會套用目標樹系中的 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
此範例在本機樹系中提供了一個已連結的啟用郵件功能的使用者,同時遠端樹系和本機樹系之間存在樹系信任。
首先,執行下列命令以取得本機樹系和遠端樹系認證。
$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
範例 2
如果您提供信箱識別碼的清單,則此範例支援管線。
首先,執行下列命令。
$UserCredentials = Get-Credential
然後,執行下列命令,將認證資訊傳送到 Prepare-MoveRequest.ps1 指令碼中的 RemoteForestCredential 參數。
"IanP@Contoso.com", "JoeAn@Contoso.com" | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
範例 3
您可以從來源樹系產生包含信箱識別碼清單的 CSV 檔案,從而可以將此檔案內容以管線傳輸至指令碼,以大量建立啟用郵件功能的目標使用者。
例如,CSV 檔案的內容可以是:
識別碼
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
依據目標物件的指令碼行為
本節描述目標物件出現以下情況時,指令碼如何執行:
存在重複的啟用郵件功能的目標物件
啟用郵件功能的使用者
啟用郵件功能的連絡人
LegacyExchangeDN 屬性
存在重複的啟用郵件功能的目標物件
如果指令碼嘗試從來源信箱使用者建立啟用郵件功能的目標使用者,且偵測到存在重複的啟用郵件功能的本機物件,則會使用以下邏輯:
如果來源信箱使用者的 masterAccountSid 屬性等於任何目標物件的 objectSid 或 masterAccountSid 屬性,則:
如果目標物件未擁有郵件功能,則指令碼將傳回錯誤,因為指令碼不支援將未擁有郵件功能的物件轉換為擁有郵件功能的使用者。
如果目標物件已啟用郵件功能,則該目標物件為重複物件。
如果來源信箱使用者的 proxyAddress 內容 (僅 smtp/x500) 中的位址等於目標物件的 proxyAddress 內容 (僅 smtp/x500) 中的位址,則該目標物件為重複物件。
指令碼將提示使用者存在重複的物件。
如果擁有郵件功能的目標物件是擁有郵件功能的使用者或連絡人,則很可能是由跨樹系 (以 Identity Lifecycle Management 2007 Service Pack 1 為基礎) 全域通訊清單 (GAL) 同步處理部署建立的,使用者可以使用 UseLocalObject 參數再次執行指令碼,以使用擁有郵件功能的目標物件進行信箱移轉。
啟用郵件功能的使用者
如果目標物件是啟用郵件功能的使用者,指令碼會將以下屬性從來源信箱使用者複製到啟用郵件功能的目標使用者:
msExchMailboxGUID
msExchArchiveGUID
msExchArchiveName
如果設定 LinkedMailUser 參數,指令碼會複製來源 objectSid/masterAccountSid 屬性。
啟用郵件功能的連絡人
如果目標物件是啟用郵件功能的連絡人,指令碼會刪除現有連絡人,並將其所有屬性複製到啟用郵件功能的新使用者。指令碼還會從來源信箱使用者複製以下屬性:
msExchMailboxGUID
msExchArchiveGUID
msExchArchiveName
sAMAccountName
userAccountControl (設為 514 //相當於 0x202, ACCOUNTDISABLE | NORMAL_ACCOUNT)
userPrincipalName
如果設定 LinkedMailUser 參數,指令碼會複製來源 objectSid/masterAccountSid 屬性。
LegacyExchangeDN 屬性
如果呼叫 Update-Recipient Cmdlet 將目標物件轉換為擁有郵件功能的使用者,則會為擁有郵件功能的目標使用者產生新的 LegacyExchangeDN 屬性。指令碼會將擁有郵件功能的目標使用者的 LegacyExchangeDN 屬性作為 x500 位址複製到來源信箱使用者的 proxyAddress 內容。此動作可確保在來源樹系和目標樹系之間傳送郵件時,對收件者進行正確解析。
© 2010 Microsoft Corporation. 著作權所有,並保留一切權利。