每次 Windows 更新后运行特定脚本

krl*_*mlr 6 automation scripting windows windows-7 windows-update

有没有办法在每次 Windows 更新完成时运行特定的脚本(即,在重新启动之后或在不需要重新启动的更新之后)?

我的应用程序受到MSCOMCTL.OCX 更新的影响,似乎每次 Windows 更新更新时,用户都需要应用我的修复脚本。

编辑:对于 Windows 7 及更高版本。

jsc*_*ott 13

我相信最终正确的答案是“修复您的应用程序”。但是,由于多种原因,您可能无法这样做。话虽如此...


哪个版本的Windows?在 Vista/2008 及更高版本中,您可以将计划任务与特定事件 ID 联系起来。在系统事件日志中,来自 WindowsUpdateClient 的事件 ID 19 表示WUA 更新安装成功

事件查看器 WindowsUpdateClient 事件 ID 19

启动任务计划程序管理单元,taskschd.msc。右键单击“任务计划程序库”并选择“创建基本任务...”。

创建基本任务

在下一个屏幕中,输入名称和简要说明,然后单击“下一步”。

通用名称和描述

单击标记为“记录特定事件时”的单选按钮,单击“下一步”。

记录特定事件时

选择“System”作为日志,“WindowsUpdateClient”作为来源,“19”作为事件ID,点击“下一步”。

日志源和事件 ID

单击“启动程序”单选按钮,单击“下一步”。

启动程序

提供“修复它”脚本或可执行文件的路径,单击“下一步”。

脚本路径

检查您的设置是否正确,然后单击“完成”。

在此处输入图片说明

您现在将看到库中列出的计划任务以及您的设置。


这是一个仅使用 的命令行示例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)]]"
Run Code Online (Sandbox Code Playgroud)

  • 我现在出去了,但是是的,[`schtasks.exe`](http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx ) 支持`ONEVENT`,所以你应该能够......如果我有时间,我可能会拼凑一个Powershell示例。请注意,组策略首选项客户端扩展还允许创建计划任务。 (2认同)