我本月早些时候提出question关于如何使用vbscript检查服务器是否有任何关键更新未决的问题。提供的答案非常有效,我将脚本发送到我们的QA环境以进行其他测试。
服务器可以运行“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代理并输出就像我上面那样,那么我可以继续我的其余脚本?
答案 0 :(得分:1)
服务器可以运行“vault”环境,并且无法访问Windows Update 代理,只能通过WSUS直接获取Windows更新。有没有办法使用VBScript 仅直接通过WSUS检查关键更新,而不是Windows Update Agent。
也许有关建筑的说明会对此有所帮助。每个系统都有一个Windows Update代理。它随操作系统一起提供。 Windows Update Agent完成所有工作,无论是与自动更新通信的家庭系统,在IE中浏览到Windows Update的旧系统,使用控制面板WUApp,还是与WSUS服务器通信 - 它是Windows Update代理,做的工作。
上述脚本与WSUS服务器通信,并根据Windows Update代理向WSUS服务器报告的内容检索信息。
断开连接的系统,我认为对“保险库环境”的引用是指的,不能访问AU / WU / MU,但根据“保险库环境”的大小,有可能在该环境中实现WSUS服务器。 WSUS文档包含有关如何在断开连接的网络中部署和管理WSUS服务器的详细说明。
如果断开连接的网络中没有WSUS服务器,您也可以使用脱机扫描cab(WSUSSCN2.CAB),但重要的是要注意此脱机文件不包含所有更新 - 它包含安全更新,更新汇总和服务包,如果希望获得所有关键更新,则无法满足需求。
答案 1 :(得分:0)
该脚本将(尝试)检查使用相应主机配置的任何更新服务器。如果主机配置为使用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 Update):
telnet windowsupdate.microsoft.com 80
请注意,如果没有WSUS,您的主机必须能够连接到MSKB article 885819中列出的所有网址。
还要确保名称解析适用于您的主机。