我有一个vb脚本,用于检查是否有待更新的更新。有时Windows搜索会返回错误(例如503),并生成错误弹出窗口。由于我不熟悉vbs,我不知道从哪里开始寻找解决方案。
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")
问题出现在第3行。它说:
Script: C:\path-to-my-script\my-script.vbs Line: 3 Char: 1 Error: 0x80244022 Code: 80244022 Source: (null)
如何阻止生成弹出窗口或获取弹出窗口并立即关闭它?
答案 0 :(得分:2)
错误0x80244022表示更新服务器HTTP服务暂时不可用(无论出于何种原因)。请参阅this MSKB article以获取与连接相关的错误代码列表。
要处理此错误,请将其置于On Error Resume Next
和On Error Goto 0
语句之间:
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
On Error Resume Next
Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")
If Err Then
'add logging routine here
WScript.Quit 1
End If
On Error Goto 0
'more code here
请注意,上述内容会在调用Search
方法时发生的任何错误上不加区别地终止脚本。如果你想以不同的方式处理不同的错误,你可以在条件中放入一个Select
语句:
If Err Then
Select Case Err.Number
Case &h80244022
'quit immediately
WScript.Quit 1
Case &h8009033F
'wait some time and retry
WScript.Sleep 900000
Set searchResult = updateSearcher.Search(...)
Case &h...
'just log a message and continue
...
End Select
End If