你好,
在 Cluster‑Aware Updating (CAU) 的流程裡,當 Post‑Update PowerShell Script 拋出未處理的錯誤並直接 Exit,CAU 會將整個 Run 視為失敗並停滯,這就是造成其他節點無法繼續更新的原因。標準的解法不是把整個叢集離線,而是透過 CAU 的 PowerShell cmdlet 來強制中止或恢復這個 Run。
在這種情況下,你可以在任一健康節點上執行 Stop-CauRun -Force,這會立即終止卡住的 Run,並釋放叢集資源,讓你能重新啟動一個新的更新流程。如果你希望嘗試繼續原本的 Run,而不是完全中止,可以用 Resume-CauRun -ClusterName <ClusterName>,前提是當初啟動 Run 時有加上 -ForceClusterAction 參數,否則 Resume 不會生效。
要避免這種停滯再次發生,Post‑Update Script 必須處理好錯誤並回傳受控的退出碼。建議在腳本中使用 try/catch,並確保最後 Exit 0 表示成功,Exit 1 或其他代碼表示失敗但不會讓 CAU 整個掛起。CAU 對非零退出碼的解讀是「阻塞性錯誤」,所以必須明確定義腳本的行為。
總結來說,立即解決的方法是用 Stop-CauRun -Force 強制結束卡住的 Run,或用 Resume-CauRun 嘗試繼續,然後重新啟動更新流程。長期來看,修正 Post‑Update Script 的錯誤處理邏輯才是避免叢集更新停滯的根本。
Domic Vo