在命令介面中使用 RollAlternateserviceAccountCredential.ps1 指令碼
適用於:Exchange Server 2013
您可以在 Exchange Server 2013 中使用 RollAlternateServiceAccountPassword.ps1 腳本來更新替代服務帳戶認證 (ASA 認證) ,並將更新散發至指定的用戶端存取伺服器。
注意事項
Exchange 管理命令介面不會自動載入腳本。 您必須在所有腳本前面加上 .\ 例如,若要執行RollAlternateServiceAccountPassword.ps1腳本,請輸入 .\RollAlternateServiceAccountPassword.ps1
。
此腳本僅以英文提供。
如需如何使用和撰寫腳本的詳細資訊,請參閱使用 Exchange 管理命令介面編寫腳本。
語法
RollAlternateServiceAccountPassword.ps1 -Scope <Object> -Identity <Object> -Source <Object> -
詳細描述
您必須已獲指派權限,才能執行此程序或這些程序。 若要查看您需要的許可權,請參閱用戶端存取許可權主題中的專案。
替代服務帳戶認證腳本的技術詳細資料
此腳本有助於設定和維護 ASA 認證。 建立 ASA 認證並設定適當的服務主體名稱之後,您可以使用腳本來將認證散發給所有目標用戶端存取伺服器。
若要使用腳本,您必須識別您想要將哪些伺服器設為目標,以及您想要使用哪一個認證作為 ASA 認證。
伺服器範圍
您可以選擇讓腳本以樹系中的所有 Client Access 伺服器、特定 Client Access 伺服器陣列的所有成員或特定伺服器為目標。 可用的參數為 ToEntireForest、 ToArraryMembers和 ToSpecificServers。 如果您將腳本的目標設為特定伺服器或特定伺服器陣列的成員,則必須使用您要設為目標的伺服器或伺服器陣列名稱稱來指定Identity 參數。
認證來源
腳本可以從現有的伺服器複製替代服務帳戶密碼。 或者,您可以指定您要使用的帳戶,並讓腳本產生帳戶的新密碼。 可用的參數為 GenerateNewPasswordFor 和 CopyFrom。 GenerateNewPasswordFor參數需要您以下列格式指定帳戶字串:DOMAIN\Account Name。 如果您使用電腦帳戶,則必須在帳戶名稱結尾附加 「$」,例如 CONTOSO\ClientServerAcct$。 CopyFrom參數會採用現有用戶端存取伺服器的名稱作為認證來源。
產生認證的新密碼
密碼是由腳本所建立。 不需要使用者輸入。 腳本會嘗試將密碼散發給所有目的電腦,然後嘗試使用新產生的密碼更新 Active Directory 帳戶認證。
新產生的密碼長度為 73 個字元,符合標準的強式密碼需求。 如果您的密碼需求不同,您可能需要手動設定密碼,然後將它複製到目標伺服器。
為了避免服務中斷,腳本會檢查每部用戶端存取伺服器,並維護目前密碼,以及新增密碼。 執行腳本之後,共用 ASA 認證將能夠使用下列其中一個密碼:儲存在 Active Directory 中的目前密碼,或 Active Directory 中尚未設定的新密碼。
所有不再有效的密碼,例如過期的密碼,都會從目的地伺服器中移除。 如果無法變更 Active Directory 中的密碼,可能是因為密碼已過期,腳本會嘗試重設密碼。 這會要求執行腳本的帳戶有權重設 Active Directory 電腦帳戶密碼或使用者帳戶密碼,視您的替代服務帳戶是電腦帳戶或使用者帳戶而定。
如果所有目標用戶端存取伺服器的密碼未成功變更,更新 Active Directory 密碼可能會導致驗證失敗。 如果腳本以自動模式執行,除非所有目標用戶端存取伺服器都已成功更新,否則不會以新密碼更新 Active Directory 密碼。 如果腳本以出席模式執行,系統會詢問您是否要更新 Active Directory 中的密碼。
建立排程工作以自動化密碼維護
如果您想要讓腳本建立排程工作以持續維護密碼,請使用 CreateScheduledTask 參數。 此參數需要字串作為您想要建立之工作的名稱。
注意事項
在建立自動排程工作之前,請先執行腳本,並確認它在入場模式中正常運作。
腳本會在腳本所在的資料夾中建立 .cmd 檔案。 然後,它會建立工作,每三周執行一次該 .cmd 檔案。 例如,您可以使用 Windows 工作排程器來修改排程工作,以將它設定為更常執行。 根據預設,工作會以目前登入的使用者身分執行。 此外,腳本只會在使用者登入電腦時執行。 我們建議您修改排程的工作,以在使用者是否登入時執行。 如果該帳戶具有重設密碼的 Active Directory 許可權,以及 Exchange Enterprise 系統管理員角色,您也可以選擇在不同的帳戶下執行它。 建立排程工作時,腳本會自動以自動模式執行。
超出腳本範圍的工作
腳本不會管理 ASA 認證的 SPN,或允許您從伺服器移除替代的服務帳戶。 若要從伺服器移除替代服務帳戶,請參閱設定負載平衡用戶端存取伺服器的 Kerberos 驗證中的關閉 Kerberos 驗證一節。
針對腳本進行疑難排解
建議您在建立自動排程工作之前,先執行腳本,並確認它在出席模式下正常運作。 如需疑難排解資訊,請參閱 針對RollAlternateServiceAccountCredential.ps1腳本進行疑難排解。
驗證腳本
當您使用 -verbose 旗標以互動方式執行腳本時,腳本的輸出應該會指出哪些腳本作業成功。 若要確認用戶端存取伺服器已更新,您可以確認 ASA 認證上上次修改的時間戳記。 下列範例會產生用戶端存取伺服器清單,以及上次更新替代服務帳戶的時間。
Get-ClientAccessServer -IncludeAlternateServiceAccountCredentialstatus |Fl Name, AlternateServiceAccountConfiguration
您也可以在執行腳本的電腦上檢查事件記錄檔。 腳本的事件記錄專案位於應用程式事件記錄檔中,且來自來源 MSExchange 管理應用程式。 下表列出記錄的事件,以及事件的意義。
編寫事件識別碼及其說明的腳本
事件 | 說明 |
---|---|
14001 | 開始 |
14002 | 成功 (資訊) |
14003 | 成功,但具有警告。 腳本遇到一些問題,但能夠克服這些問題,或使用者輸入確認它們不是必要的。 如果腳本以互動式模式執行,請閱讀腳本輸出以取得進一步的警告詳細資料。 |
14004 | 失敗 |
如果腳本以排程工作的方式執行,其結果會記錄到名為RollAlternateServiceAccountPassword之子資料夾中的 Exchange Server記錄資料夾。
您可以使用記錄來確認工作已成功執行。
參數
參數 | 必要 | 描述 |
---|---|---|
ToEntireForest | 選用 | ToEntireForest參數會將腳本的目標設為樹系中的所有 Client Access 伺服器。 |
ToArrayMembers | 選用 |
ToArrayMembers參數會將腳本的目標設為特定 Client Access 伺服器陣列的所有成員。 注意:如果您使用 ToArrayMembers 參數或 ToSpecificServers 參數,則必須使用 Identity 參數指定伺服器名稱或伺服器陣列名稱稱。 |
ToSpecificServers | 選用 |
ToSpecificServers參數會將腳本的目標設為特定伺服器。 注意:如果您使用 ToArrayMembers 參數或 ToSpecificServers 參數,則必須使用 Identity 參數指定伺服器名稱或伺服器陣列名稱稱。 |
Identity | 必要 | Identity參數會指定 Client Access 伺服器陣列的名稱,或您要設為目標之特定伺服器的名稱。 |
GenerateNewPasswordFor < String> | 選用 | GenerateNewPasswordFor參數會指定腳本應該產生 ASA 的新密碼。 字串值必須是下列格式的 ASA 帳戶:DOMAIN\Account Name。 如果您使用電腦帳戶,則必須在帳戶名稱結尾附加 $ 字元。 |
CopyFrom < 字串> | 選用 | CopyFrom參數會指定從另一部 Client Access 伺服器複製認證。 指定的字串值是 Client Access 伺服器的名稱。 |
Mode | 選用 | [模式] 參數會指定腳本是以接合模式還是自動模式執行。 自動模式不會提示使用者輸入,而且會在必要時自動選擇更保守選項。 |
CreateScheduledTask < 字串> | 選用 |
CreateScheduledTask參數會指示腳本建立排程工作,以執行 ASA 認證更新。 字串值是將建立之排程工作的名稱。 注意:此腳本會在腳本所在的資料夾中建立 .cmd 檔案。 排程的工作會每三周執行一次 .cmd 檔案。 您可以直接在 Windows 工作排程器中編輯工作,以變更工作的頻率。 |
WhatIf | 選用 | WhatIf參數會指示命令模擬它會對物件採取的動作。 藉由使用 WhatIf 參數,您可以檢視會發生的變更,而不需要套用這些變更。 您不需要使用 WhatIf 參數指定值。 |
確認 | 選用 | Confirm 參數會使得命令暫停處理,並要求確認命令將進行的動作,之後才會繼續處理。 您不需要利用 Confirm 參數指定任何值。 |
Verbose | 選用 | Verbose參數會告知腳本執行詳細資訊記錄,以便將腳本動作的其他相關資訊寫入記錄檔。 |
偵錯 | 選用 | Debug參數會告知腳本以偵錯模式執行。 此參數應該用來判斷腳本失敗的原因。 |
範例
範例 1
此範例會使用 腳本來將認證推送至樹系中的所有用戶端存取伺服器,以進行第一次設定。
.\RollAlternateserviceAccountPassword.ps1 -ToEntireForest -GenerateNewPasswordFor "Contoso\ComputerAccount$" -Verbose
範例 2
此範例會為使用者帳戶 ASA 認證產生新的密碼,並將密碼散發給名稱符合 *mailbox*之 Client Access 伺服器陣列的所有成員。
.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers _mailbox_ -GenerateNewPasswordFor "Contoso\UserAccount" -Verbose
範例 3
此範例會排程稱為 「Exchange-RollAsa」 的每月一次自動密碼復原排程工作。 它會使用新的腳本產生密碼,更新整個樹系中所有用戶端存取伺服器的 ASA 認證。 已建立排程工作,但不會執行腳本。 當排程工作執行時,腳本會以自動模式執行。
.\RollAlternateServiceAccountPassword.ps1 -CreateScheduledTask "Exchange-RollAsa" -ToEntireForest -GenerateNewPasswordFor 'contoso\computerAccount$'
範例 4
此範例會更新名為 CAS01 之 Client Access 伺服器陣列中所有 Client Access 伺服器的 ASA 認證。 它會從 Contoso 網域中的 Active Directory 電腦帳戶 ServiceAc1 取得認證。
.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers "CAS01" -GenerateNewPasswordFor "CONTOSO\ServiceAc1$"
範例 5
此範例示範如何使用腳本來將 ASA 散發到新電腦或重新提供服務的電腦,可能是因為您正在增加伺服器陣列的大小,或是因為您在維護之後重新引進陣列成員。
您必須先更新 ASA 認證,用戶端存取伺服器才能接收流量。 從任何已正確設定的用戶端存取伺服器複製共用 ASA 認證。 例如,如果伺服器 A 目前有運作中的 ASA 認證,而且您剛將伺服器 B 新增至陣列,您可以使用腳本將認證 (包括從伺服器 A 到伺服器 B 的密碼) 。如果伺服器 B 在上次擲回密碼時已關閉或還不是陣列的成員,這會很有用。
.\RollAlternateServiceAccountPassword.ps1 -CopyFrom ServerA -ToSpecificServers ServerB -Verbose