參考系統修正更新失敗的文章
https://www.diskpart.com/articles/sfc-scannow-there-is-a-system-repair-pending-7201.html
https://forum.gamer.com.tw/Co.php?bsn=60030&sn=2235955
公司的主機常常發生安全性更新失敗,觀察了幾次之後,發現都是在做月安全性更新出錯,但是病毒碼的更新卻要正常,感覺不太可能是每個月更新包都出問題,約略同時安裝的主機卻又正常,所以到網路上搜尋了一下,並實際把該主機Clone 成另一台來測試。
一開始遇到檢查系統修復作業時有擱置(pending)的修復作業,但多次重新開機仍無法修復

這個問題其實是有一個 C:\windows\winsxs\pending.xml 這個檔案造成的問題,但是這個檔案是系統檔案,正常情況下很難刪掉,所以我選擇進到安全模式後變更權限再刪除
執行 DOS Command 先強制開機後進入安全模式 (可以用開機後猛按F8進入,但個人手殘有一定的失敗機率)
設定開機參數為進入安全模式
bcdedit /set {current} safeboot minimal
既然都打開 dos box, 順便手動重開
shutdown /r /t 1
要恢復正常開機,請輸入以下指令
bcdedit /deletevalue safeboot
系統重開機後就自動進入安全模式,登入系統後修正 pending.xml 的權限,把刪除權限賦予給 administrator 後刪除,這邊我就不貼圖了
刪掉後可以立即執行 sfc /scannow 來確認有沒有成功,如果正常就可以看到以下畫面,但是掃描要很久喔。

接下來為求謹慎,我重新開機到正常模式後再度執行了一次 sfc /scannow,同樣的並沒有發生問題,
接下來可以再試試看這兩個指令,來掃描開機的 image 有無異常
Dism /Online /Cleanup-Image /ScanHealth
Dism /Online /Cleanup-Image /CheckHealth
如果發現異常,可以執行以下指令回覆健康的 Image
DISM /Online /Cleanup-image /Restorehealth
接下來驗證看看以上作業是否正確,我用了一個Wsus 自動更新失敗的更新,上網下載離線安裝程式,先前執行都會出現不符合版本的錯誤,修復以上問題後就可以正常的執行更新。

如果各位其他服務器也發生更新失敗,不妨試試利用以上的步驟來解。
[2022/11/02 更新]
參考來源: https://blogs.msmvps.com/bradley/2010/03/26/fixing-a-bit-of-pending-xml/
https://www.windowscentral.com/how-reclaim-space-reducing-size-winsxs-folder-windows-10
要刪除 pending.xml 也有不重開機的方法,可透過用管理員身分執行 DOS Command prompt,執行以下的指令
C:
Cd \windows\winsxs
取得該檔案的擁有權
takeown /f pending.xml
重新賦予 pending.xml 使用者權限
cacls C:\Windows\winsxs\pending.xml /G :F
我用了檔案總管去看目前的授權,我自己把本機 administrator 賦予所有權限,然後刪除掉這個檔案,之後再執行以上步驟。
同時我看了我們的環境 winsxs 這個路徑下有很多目錄及檔案,這個應該是一些舊的更新檔案,也可以透過指令來計算那些檔案是不需要的然後刪除,其指令可以參考:
分析路徑下的內容:
dism /Online /Cleanup-Image /AnalyzeComponentStore
這個指令要跑一下下,比SFC 要快上很多,跑完後會有個建議值看要不要刪掉,可由自行判斷
清除指令
dism /online /Cleanup-Image /StartComponentCleanup
