Windows

每次 Windows 更新後執行特定腳本

  • August 26, 2013

有沒有辦法在每次 Windows 更新完成時執行特定的腳本(即重啟後或不需要重啟的更新後)?

我的應用程序受到MSCOMCTL.OCX 更新的影響,而且似乎每次 Windows 更新更新時,使用者都需要應用我的修復腳本。

編輯:對於 Windows 7 及更高版本。

我相信,最終,正確的答案是“修復你的應用程序”。但是,由於多種原因,您可能無法做到。話雖如此…


哪個版本的 Windows?在 Vista/2008 及更高版本中,您可以將計劃任務綁定到特定的事件 ID。在系統事件日誌中,來自 WindowsUpdateClient 的事件 ID 19 表示WUA 更新安裝成功

事件查看器 WindowsUpdateClient 事件 ID 19

啟動任務計劃程序管理單元,taskschd.msc. 右鍵點擊“任務計劃程序庫”並選擇“創建基本任務…”。

創建基本任務

在下一個螢幕中,輸入名稱和簡要說明,然後點擊“下一步”。

通用名稱和描述

點擊標有“記錄特定事件時”的單選按鈕,點擊“下一步”。

記錄特定事件時

選擇“系統”作為日誌,選擇“WindowsUpdateClient”作為源,選擇“19”作為事件ID,點擊“下一步”。

日誌源和事件 ID

點擊“啟動程序”單選按鈕,點擊“下一步”。

啟動程序

提供“修復它”腳本或執行檔的路徑,點擊“下一步”。

腳本路徑

檢查您的設置是否正確,然後點擊“完成”。

在此處輸入圖像描述

您現在將看到帶有您的設置的庫中列出的計劃任務。


這是一個使用 only 的命令行範例C:\Windows\system32\schtasks.exe,XPath 過濾器語法花了我一段時間。似乎 Task Scheduler僅使用 XPath 的一個子集

REM Create scheduled task triggered by WindowsUpdateClient event ID 19
schtasks /Create /TN "Post WUA Update Install" /TR "C:\scripts\your.fix.cmd" /SC ONEVENT /EC System /MO "*[System[Provider[@Name='Microsoft-Windows-WindowsUpdateClient'] and (EventID=19)]]"

引用自:https://serverfault.com/questions/533656