在命令介面中使用 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 陣列的所有成員或特定伺服器作為目標。可用的參數有 ToEntireForest、ToArraryMembers 和 ToSpecificServers。如果您要以特定的伺服器或特定伺服器陣列的成員作為目標,則必須使用要作為目標的伺服器或伺服器陣列名稱指定 Identity 參數。
認證來源
指令碼可以從現有的伺服器複製備用服務帳戶密碼。或者,您可以指定要使用的帳戶,並且讓指令碼為帳戶產生新的密碼。可用的參數是 GenerateNewPasswordFor 和 CopyFrom。GenerateNewPasswordFor 參數需要您以下列格式指定帳戶字串:網域\帳戶名稱。如果使用電腦帳戶,則您必須在帳戶名稱末端加上 "$",例如 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 陣列中所有成員的指令碼為目標。
|
||
ToSpecificServers |
選用 |
ToSpecificServers 參數,以特定伺服器的指令碼做為目標。
|
||
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 認證更新的排程工作。字串值是即將建立的排程工作名稱。
|
||
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. 著作權所有,並保留一切權利。