[求救] CAU Post-Update Script 出 Error 卡死咗成個 Cluster Update Run,點樣可以 Force Bypass?

光亚 创新 60 信譽點數
2026-07-14T04:16:10.4866667+00:00

環境背景:

  • 正在執行 Cluster-Aware Updating (CAU)
  • 設定了 Post-Update PowerShell Script 作 Service Health Checking。

問題描述: 在 Node 準備恢復上線時,該 Post-Update Script 拋出未處理的錯誤代碼(Unhandled Code Error)並直接結束(Exit)。此舉導致整個 CAU 流程處於 Stalled(停滯)狀態,其餘的 Cluster Nodes 無法繼續進行更新。

技術求助: 當 CAU 因為 Post-Update Script 執行失敗而卡死時,請問有何標準方法可以強制 Override 該次 Run,令 Cluster 恢復正常更新流程,而無需將整個 Cluster 離線(Offline)?

Windows 商務版 | Windows for IoT
0 則留言 沒有留言

1 個回答

排序依據: 最實用
  1. Domic Vo 36,835 信譽點數 獨立顧問
    2026-07-14T04:50:40.29+00:00

    你好,

    在 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

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。