在设置为“仅检测”的服务器上编写 WSUS 更新脚本

在设置为“仅检测”的服务器上编写 WSUS 更新脚本

我想自动安装 Windows 服务器更新(由 WSUS 支持),但似乎无法真正wuauclt /updatenow启动安装(或任何其他未记录的开关)。

它在测试工作站上运行良好,但我认为这是因为安装设置为每天自动,而服务器设置为仅检测。我计划使用另一个更强大的第三方调度程序在一周中的某些天以及每月的某些周安装更新。例如,服务器 A 在每月的第一个星期日安装,服务器 B 在每月的第二个星期日安装,等等。

基本上,我正在寻找一个可编写脚本,相当于单击服务器上的 Windows 更新 GUI 对话框中的“安装更新”按钮。

答案1

看起来你可以这样做COM API(因此您可以使用任何可以使用 COM 的脚本语言——VBScript、PowerShell 等)。

下面的 VBScript 代码片段将搜索待处理的更新、下载并静默安装它们。

Option Explicit

Dim objUpdateSess
Dim objUpdateSearcher
Dim objDownloader
Dim objInstaller
Dim objSearchResult

Set objUpdateSess = CreateObject("Microsoft.Update.Session")

Set objUpdateSearcher = objUpdateSess.CreateUpdateSearcher()

Set objDownloader = objUpdateSess.CreateUpdateDownloader()

Set objInstaller = objUpdateSess.CreateUpdateInstaller()

' Search for pending updates
Set objSearchResult = objUpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0 and Type='Software'")

' Download the pending updates
objDownloader.Updates = objSearchResult.Updates
objDownloader.Download()

' Install the pending updates
objInstaller.AllowSourcePrompts = False
objInstaller.ForceQuiet = True
objInstaller.Updates = objDownloader.Updates
ObjInstaller.Install()

此脚本完全没有错误检查,所以不要使用它!网络上有很多人编写的小脚本来自动执行此过程(有些可以发送电子邮件,完成后自动重启等)。进行一些搜索,看看你能想出什么,或者自己动手。

答案2

Microsoft 有一个很棒的示例 vscript,用于通过 Windows Update 安装更新http://msdn.microsoft.com/en-us/library/windows/desktop/aa387102(v=vs.85).aspx

我会对您的使用做出一些调整,比如自动接受所有 EULA 并且不会停下来询问任何问题。

答案3

编辑本地组策略是我能想到的最接近您需要做的事情。

  1. 按 Windows 键 + R
  2. 键入 gpedit.msc
  3. 浏览至:计算机配置 -> Windows 组件 -> Windows 更新
  4. 在那里您可以编辑所有设置,但您最感兴趣的可能是“配置自动更新”,此策略将允许您选择运行 Windows 更新的日期和时间。

如果系统是域的一部分,您也可以使用组策略执行此操作。

相关内容