共用方式為


在命令介面中使用 RollAlternateserviceAccountCredential.ps1 指令碼

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2015-03-09

您可以使用 Exchange Server 2010 Service Pack 1 (SP1)  中的 RollAlternateServiceAccountPassword.ps1 指令碼更新備用服務帳戶認證 (ASA 認證),以及發佈更新至指定的 Client Access Server。

注意事項附註:
Exchange 管理命令介面不會自動載入指令碼。您必須在所有指令碼前面加上「.\」。例如,若要執行 RollAlternateServiceAccountPassword.ps1,請輸入 .\RollAlternateServiceAccountPassword.ps1
注意事項附註:
此指令碼僅提供英文版。

如需如何使用 Kerberos 驗證與 Client Access Server 陣列或負載平衡解決方案的詳細資訊,請參閱將 Kerberos 與 Client Access Server 陣列或負載平衡解決方案配合使用設定負載平衡的 Client Access Server 的 Kerberos 驗證

如需如何使用及撰寫指令碼的詳細資訊,請參閱使用 Exchange 管理命令介面撰寫指令碼

語法

RollAlternateServiceAccountPassword.ps1 -Scope <Object> -Identity <Object> -Source <Object> 

詳細描述

用戶端存取權限主題中的 您必須已獲指派權限,才能執行此程序。若要查看您需要的權限,請參閱「用戶端存取安全性」項目。

備用服務帳戶認證指令碼的技術詳細資料

此指令碼可促進安裝和維護 ASA 認證。建立 ASA 認證並設定適當的服務主要名稱後,您可以使用指令碼將認證發佈至所有目標 Client Access Server。

若要使用此指令碼,您必須識別要作為目標的伺服器以及要作為 ASA 認證的認證。

伺服器範圍

您可以選擇讓指令碼以樹系中的所有 Client Access Server、特定 Client Access Server 陣列的所有成員或特定伺服器作為目標。可用的參數有 ToEntireForestToArraryMembersToSpecificServers。如果您要以特定的伺服器或特定伺服器陣列的成員作為目標,則必須使用要作為目標的伺服器或伺服器陣列名稱指定 Identity 參數。

認證來源

指令碼可以從現有的伺服器複製備用服務帳戶密碼。或者,您可以指定要使用的帳戶,並且讓指令碼為帳戶產生新的密碼。可用的參數是 GenerateNewPasswordForCopyFromGenerateNewPasswordFor 參數需要您以下列格式指定帳戶字串:網域\帳戶名稱。如果使用電腦帳戶,則您必須在帳戶名稱末端加上 "$",例如 CONTOSO\ClientServerAcct$。CopyFrom 參數會以現有 Client Access Server 的名稱作為認證來源。

產生認證的新密碼

由指令碼建立的密碼。不需要使用者輸入。指令碼將嘗試發佈密碼至所有目標電腦,並嘗試使用新建立的密碼更新 Active Directory 帳戶認證。

新產生的密碼長度為 73 個字元,符合標準強式密碼的規定。如果您的密碼需求不同,則您可能需要手動設定密碼,然後將密碼複製到目標伺服器。

為避免服務中斷,指令碼會檢查各個 Client Access Server,並且在新增密碼之外維護現用密碼。執行指令碼之後,共用的 ASA 認證將可使用下列 2 個密碼的任一個:儲存在 Active Directory 中的現用密碼,或尚未設定在 Active Directory 中的新密碼。

所有失效的密碼 (例如過期的密碼) 將會從目的地伺服器移除。如果無法變更 Active Directory 中的密碼,可能是因為密碼過期,指令碼將嘗試進行密碼重設。視您的備用服務帳戶是電腦帳戶或使用者帳戶而定,這將需要執行指令碼的帳戶具有重設 Active Directory 電腦帳戶密碼或使用者帳戶密碼的權限。

如果所有目標 Client Access Server 並未順利變更密碼,則更新 Active Directory 密碼將導致驗證失敗。如果指令碼在自動模式中執行,除非所有 Client Access Server 已經更新成功,否則指令碼將不會以新密碼更新 Active Directory 密碼。如果指令碼在自動模式中執行,則系統將詢問您是否要更新 Active Directory 中的密碼。

建立排定的工作自動化密碼維護

如果您希望指令碼建立排程工作持續維護密碼,請使用 CreateScheduledTask 參數。此參數需要您想要建立之工作的名稱字串。

注意事項附註:
建立自動排程工作前,請執行指令碼並確定其在自動模式中正常運作。

指令碼會在其所在的資料夾中建立 .cmd 檔案,然後會建立每三週執行一次該 .cmd 檔案的工作。您可以使用 Windows 工作排程器修改排程的工作,例如,設定工作執行的頻率。依預設,工作將會以目前登入的使用者身分執行。此外,只有在使用者登入該電腦時,該指令碼才會執行。我們建議您將排程的工作修改為無論使用者登入與否均執行。如果該帳戶具有重設密碼和 Exchange Enterprise Administrator role 的 Active Directory 權限,您也可以選擇在不同的帳戶下執行工作。在建立排定的工作時,指令碼將會以自動模式自動執行。

指令碼的超出範圍工作

指令碼將不會管理 ASA 認證的 SPN 或允許您從伺服器移除備用服務帳戶。若要從伺服器移除備用服務帳戶,請使用 Set-ClientAccessServer Cmdlet。如果必須移除 Kerberos 驗證,請參閱將 Kerberos 與 Client Access Server 陣列或負載平衡解決方案配合使用

指令碼疑難排解

我們建議您在建立自動排程工作前,先執行指令碼並確定其在自動模式中正常運作。如需疑難排解資訊,請參閱 疑難排解 RollAlternateServiceAccountCredential.ps1 指令碼

驗證指令碼

當您使用 -verbose 標幟以互動方式執行指令碼時,指令碼的輸出應指出成功的指令碼作業。若要確認 Client Access Server 已經更新,您可以驗證 ASA 認證上的最後修改時間戳記。以下範例會產生 Client Access Server 清單和備用服務帳戶最後更新的時間。

Get-ClientAccessServer -IncludeAlternateServiceAccountCredentialstatus |Fl Name, AlternateServiceAccountConfiguration

在執行指令碼的電腦上,您也可以檢查事件記錄。指令碼的事件記錄項目位於應用程式事件記錄中,並且來自於 MSExchange Management Application來源。下表列出記錄的事件以及事件的意義。

指令碼事件識別碼及其說明

事件 說明

14001

開始

14002

成功 (資訊)

14003

成功但包含警告。

指令碼發生某些問題,不過仍可克服,或者是使用者輸入內容已確定其為非必要項目。如果指令碼仍以互動模式執行,請閱讀指令碼輸出內容,以了解警告的詳細資訊。

14004

失敗

如果指令碼以排程的工作方式執行,其結果會記錄在 Exchange 伺服器的 [Logging] 資料夾中名稱為 [RollAlternateServiceAccountPassword] 的子資料夾中。

您可以使用記錄確認工作已經順利執行。

參數

參數 必要 描述

ToEntireForest

選用

ToEntireForest 參數是以樹系中所有 Client Access Server 的指令碼為目標。

ToArrayMembers

選用

ToArrayMembers 參數以特定 Client Access Server 陣列中所有成員的指令碼為目標。

注意事項附註:
如果您使用 ToArrayMembers 參數或 ToSpecificServers 參數,您必須使用 Identity 參數指定伺服器名稱或伺服器陣列名稱。

ToSpecificServers

選用

ToSpecificServers 參數,以特定伺服器的指令碼做為目標。

注意事項附註:
如果您使用 ToArrayMembers 參數或 ToSpecificServers 參數,您必須使用 Identity 參數指定伺服器名稱或伺服器陣列名稱。

Identity

必要

Identity 參數會指定 Client Access Server 陣列名稱或者您作為目標的特定伺服器名稱。

GenerateNewPasswordFor<String>

選用

GenerateNewPasswordFor 參數會指定應產生 ASA 新密碼的指令碼。字串值必須是 ASA 帳戶格式如下:網域\帳戶名稱。如果使用電腦帳戶,則您必須在帳戶名稱末端加上 $ 字元。

CopyFrom<String>

選用

CopyFrom 參數會指定從其他 Client Access Server 複製的認證。指定的字串值是 Client Access server 的名稱。

Mode

選用

Mode 參數可指定以手動或自動方式執行指令碼。自動模式不會提示使用者輸入,而且必要時會自動選擇較保守的選項。

CreateScheduledTask<String>

選用

CreateScheduledTask 參數會通知指令碼建立執行 ASA 認證更新的排程工作。字串值是即將建立的排程工作名稱。

注意事項附註:
此指令碼會在其所在的資料夾中建立 .cmd 檔案,排定的工作會每三週執行一次 .cmd 檔。您可以直接在 Windows 工作排程器中編輯工作,以變更工作的頻率。

WhatIf

選用

WhatIf 參數指示命令模擬它將對物件採取的動作。透過使用 WhatIf 參數,不需要套用任何變更,就能檢視變更。您不需要為 WhatIf 參數指定任何值。

Confirm

選用

Confirm 參數會使得命令暫停處理,並要求確認命令將進行的動作,之後才會繼續處理。您不需要為 Confirm 參數指定任何值。

Verbose

選用

Verbose 參數會通知指令碼執行詳細資訊記錄,指令碼動作的其他資訊便會寫入記錄檔中。

Debug

選用

Debug 參數會告訴指令碼以偵錯模式執行。此參數應該用來判斷指令碼失敗的原因。

範例

範例 1

第一次設定時,此範例會使用指令碼推送認證至樹系中所有的 Client Access Server。

.\RollAlternateserviceAccountPassword.ps1 -ToEntireForest -GenerateNewPasswordFor "Contoso\ComputerAccount$" -Verbose

範例 2

此範例會產生使用者帳戶 ASA 認證的新密碼,並將密碼發佈至名稱符合 *mailbox* 的 Client Access Server 陣列中所有的成員。

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers *mailbox* -GenerateNewPasswordFor "Contoso\UserAccount" -Verbose

範例 3

本範例排程是每個月一次自動的密碼的捲動排程工作,稱為 “Exchange RollAsa”。它會使用由指令碼產生的新密碼更新整個樹系中所有 Client Access Server 的 ASA 認證。建立排定的工作,但不執行指令碼。在執行排定的工作時,以自動模式執行指令碼。

.\RollAlternateServiceAccountPassword.ps1 -CreateScheduledTask "Exchange-RollAsa" -ToEntireForest -GenerateNewPasswordFor 'contoso\computerAccount$'

範例 4

此範例會更新名稱為 CAS01 的 Client Access Server 陣列中所有 Client Access Server 的 ASA 認證。它會由網域 Contoso 中的 Active Directory 電腦帳戶 ServiceAc1 取得認證。

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers "CAS01" -GenerateNewPasswordFor "CONTOSO\ServiceAc1$" 

範例 5

此範例顯示在增加伺服器陣列大小或在維護後重新導入陣列成員時,您可以如何使用指令碼將 ASA 發佈至新電腦或發佈至放回服務中的電腦。

在 Client Access Server 接收流量前,您需更新 ASA 認證。從任何已經正確設定的 Client Access Server 複製共用的 ASA 認證。例如,如果伺服器 A 目前具有使用中的 ASA 認證,而您剛新增伺服器 B 至陣列中,則您可以使用此指令碼將認證 (包括密碼) 從伺服器 A 複製到伺服器 B。如果伺服器 B 故障或上次部署密碼時伺服器 B 尚未成為陣列成員,這項功能就非常實用。

.\RollAlternateServiceAccountPassword.ps1 -CopyFrom ServerA -ToSpecificServers ServerB -Verbose

 © 2010 Microsoft Corporation. 著作權所有,並保留一切權利。