直接通过WSUS检查Windows更新

问题描述:

本月初我做了question关于如何使用vbscript检查服务器是否有任何关键更新挂起。提供的答案效果很好,我发送了脚本到我们的QA环境进行其他测试。直接通过WSUS检查Windows更新

有一个服务器可以运行的“Vault”环境,它无法访问Windows Update Agent,只能通过WSUS直接获取Windows更新。有没有办法使用VBScript来直接通过WSUS和而不是 Windows Update Agent来检查关键更新。

我收到0x8024402C此代码错误(逻辑取自上一个问题)。它被包装在一个子程序中,根据结果给出PASS或FAIL输出。我已经在一些服务器上验证了这一点。

Dim count 
count = 0 

'Microsoft Magic 
Set updateSession = CreateObject("Microsoft.Update.Session") 
Set updateSearcher = updateSession.CreateupdateSearcher() 
Set searchResult = updateSearcher.Search("IsAssigned=1 and isHidden=0 and IsInstalled=0 and Type='Software'") 
'End Microsoft Magic 
    If searchResult.Updates.Count <> 0 Then ' If Updates were found 
     For i = 0 to searchResult.Updates.Count - 1 'Just count the number of updates 
     count = count + 1 
     Next 
     objResult.Text = "FAIL" 
     objComment.Text = "There are " & count & " updates that need to be installed" 
    Else 
     objResult.Text = "PASS" 
     objComment.Text = "All updates are installed" 
    End If 

    If NOT len(objResult.Text) Then 'Just in case searchResult produces an error 
    objResult.Text = "FAIL" 
    objComment.Text = "Could not query Windows Update Server" 
    End If 

最起码,有没有跟我当前的代码的方式来检查错误,如果它不能连接到Windows Update Agent和,像我上面做的只是输出,这样我就可以继续使用我的脚本的其余部分?

+0

我想说这个问题是关于ServerFault而不是*的话题。 – 2013-02-21 10:02:24

有一个“金库”的环境,一台服务器可以运行,而且它具有Windows更新 代理进不去,只能获得Windows直接通过WSUS更新。有没有一种VBScript到 的方法只能通过WSUS直接检查关键更新,而不是Windows Update Agent。

也许关于建筑的一个笔记将有助于此。每个系统都有一个Windows更新代理。它随操作系统一起提供。 Windows更新代理完成所有工作,无论是与自动更新聊天的家庭系统,浏览到Windows中的Windows Update的较旧系统,使用控制面板WUApp还是与WSUS服务器通话 - 这是Windows更新代理做这项工作。

上述脚本与WSUS服务器通信,并根据Windows Update代理向WSUS服务器报告的内容检索信息。

一个断开的系统,这是我认为对“Vault环境”的引用是指,无法访问AU/WU/MU,但取决于“Vault环境”的大小,这是可能的在该环境中实施WSUS服务器。 WSUS文档包含有关如何在断开的网络中部署和管理WSUS服务器的详细说明。

如果断开连接的网络中没有WSUS服务器,也可以使用脱机扫描服务器(WSUSSCN2.CAB),但其中重要的一点是注意此脱机文件不包含所有更新 - 它包含安全更新,更新汇总和Service Pack,因此如果希望获得所有关键更新,那将无法满足需求。

+0

感谢您提供这些信息 - 我个人不知道这个架构,所以这可以帮助我更清楚地考虑它。我今天晚些时候会研究这个,并将我的发现发回。谢谢! – envinyater 2013-02-27 14:02:40

该脚本将(尝试)检查与相应主机配置的任何更新服务器。如果主机配置为使用WSUS,则脚本将检查该服务器。如果主机配置为与Microsoft的Windows Update服务器进行检查,则它将尝试连接到这些服务器。

错误8024402C表示计算机无法连接到已配置的更新服务器。检查你的主机是否被配置为使用WSUS:

Const HKLM = &h80000002 
Const wuKey = "SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" 

Set wmi = GetObject("winmgmts://./root/default:StdRegProv") 
status = wmi.GetStringValue(HKLM, wuKey, "WUServer", wsus) 

If status = 0 Then 
    WScript.Echo "Using WSUS: " & wsus 
Else 
    WScript.Echo "Using Windows Update directly." 
End If 

然后检查是否可以连接到相应的服务器(更改端口80,如果有必要在WUServer值指定的端口):

telnet wsus.example.com 80 

或(适用于Windows更新):

telnet windowsupdate.microsoft.com 80 

注意,如果没有一个WSUS主机必须能够连接到全部列于MSKB article 885819的网址。

还要确保名称解析在您的主机上有效。