Skip to content

Server Core (Hyper-V) Searching, Downloading, and Installing Windows Updates

The scripting sample in this topic shows you how to use Windows Update Agent (WUA) to scan, download, and install updates.

The sample searches for all the applicable software updates and then lists those updates. Next, it creates a collection of updates to download and then downloads them. Finally, it creates a collection of updates to install and then installs them.

If you want to search, download, and install a specific update that you identify by using the update title, see Searching, Downloading, and Installing Specific Updates.

Before you attempt to run this sample, note the following:

  • WUA must be installed on the computer. For more information about how to determine the version of WUA that is installed, see Determining the Current Version of WUA.
  • The sample does not provide its own user interface.
  • WUA prompts the user to restart the computer if an update requires a restart.
  • The sample can download updates only by using WUA. It cannot download updates from a Software Update Services (SUS) 1.0 server.
  • Running this sample requires Windows Script Host (WSH). For more information about WSH, see the WSH section of the Microsoft Platform SDK. If the sample is copied to a file named WUA_SearchDownloadInstall.vbs, you can run the sample by opening a Command Prompt window and typing the following command at the command prompt.

Example code: (To execute us cscript WUA_SearchDownloadInstall.vbs, or whatever you name your VBS script)

Set updateSession = CreateObject(“Microsoft.Update.Session”)
Set updateSearcher = updateSession.CreateupdateSearcher()

WScript.Echo “Searching for updates…” & vbCRLF

Set searchResult = _
updateSearcher.Search(“IsInstalled=0 and Type=’Software’”)
WScript.Echo “List of applicable items on the machine:”

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & “> ” & update.Title
Next

If searchResult.Updates.Count = 0 Then
 WScript.Echo “There are no applicable updates.”
 WScript.Quit
End If

WScript.Echo vbCRLF & “Creating collection of updates to download:”

Set updatesToDownload = CreateObject(“Microsoft.Update.UpdateColl”)

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & “> adding: ” & update.Title
    updatesToDownload.Add(update)
Next

WScript.Echo vbCRLF & “Downloading updates…”

Set downloader = updateSession.CreateUpdateDownloader()
downloader.Updates = updatesToDownload
downloader.Download()

WScript.Echo  vbCRLF & “List of downloaded updates:”

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    If update.IsDownloaded Then
       WScript.Echo I + 1 & “> ” & update.Title
    End If
Next

Set updatesToInstall = CreateObject(“Microsoft.Update.UpdateColl”)

WScript.Echo  vbCRLF & _
“Creating collection of downloaded updates to install:”

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
       WScript.Echo I + 1 & “> adding:  ” & update.Title
       updatesToInstall.Add(update) 
    End If
Next

WScript.Echo  vbCRLF & “Would you like to install updates now? (Y/N)”
strInput = WScript.StdIn.Readline
WScript.Echo

If (strInput = “N” or strInput = “n”) Then
 WScript.Quit
ElseIf (strInput = “Y” or strInput = “y”) Then
 WScript.Echo “Installing updates…”
 Set installer = updateSession.CreateUpdateInstaller()
 installer.Updates = updatesToInstall
 Set installationResult = installer.Install()
 
 ’Output results of install
 WScript.Echo “Installation Result: ” & _
 installationResult.ResultCode
 WScript.Echo “Reboot Required: ” & _
 installationResult.RebootRequired & vbCRLF
 WScript.Echo “Listing of updates installed ” & _
  “and individual installation results:”
 
 For I = 0 to updatesToInstall.Count – 1
  WScript.Echo I + 1 & “> ” & _
  updatesToInstall.Item(i).Title & _
  ”: ” & installationResult.GetUpdateResult(i).ResultCode   
 Next
End If

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

Gravatar
WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS

Follow

Get every new post delivered to your Inbox.