Windows Updates
Usage:
[Number of critical updates] type=integer command=cscript /b "check_updates.vbs" result_pattern=Critical Updates: ([[:digit:]]+) timeout=120
Code:
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
WScript.StdOut.WriteLine "Searching for updates..."
Set searchResult = _
updateSearcher.Search("IsInstalled=0")
WScript.StdOut.WriteLine "Total: " & searchResult.Updates.Count
PreSelected = 0
For I = 0 To searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
If update.AutoSelectOnWebSites then
PreSelected = PreSelected + 1
End If
Next
WScript.StdOut.WriteLine "Selected by Microsoft: " & PreSelected
WScript.StdOut.WriteLine "By category:"
ListCategories searchResult.RootCategories, " "
sub ListCategories(categories, prefix)
For J = 0 To categories.Count-1
Set category = categories.Item(J)
WScript.StdOut.WriteLine prefix & category.Name & ": " & category.Updates.count
' For I = 0 To category.Updates.Count-1
' Set update = category.Updates.Item(I)
' If update.AutoSelectOnWebSites then
' WScript.StdOut.WriteLine prefix & "x " & update.Title
' Else
' WScript.StdOut.WriteLine prefix & " " & update.Title
' End if
' Next
ListCategories category.Children, prefix & " "
Next
end sub
Example output from script:
Searching for updates...
Total: 38
Selected by Microsoft: 31
By category:
Critical Updates: 2
Definition Updates: 0
Drivers: 1
Feature Packs: 0
Security Updates: 27
Service Packs: 0
Tools: 0
Update Rollups: 2
Updates: 6
Microsoft: 0
Windows: 0
Windows Server 2003: 38