Updating Windows Server 2008 Core

Tonight is “Server Night.” A night set aside on the third Tuesday of every month dedicated to drinking a lot of caffeine and causing downtime for the company.

The first task of the night: update our Core installations (which includes several virtual servers and physical servers alike). The problem comes in with the fact that Core has no GUI (go figure) and everything has to be done at the command line. Herein lies our problem, how to update the stupid thing?

So, naturally, a Google marathon has ensued all morning. I read blog after blog after Microsoft KB. One blog appeared as my shining light in the darkness: Nathan’s Daily Grind – more specifically, this post: How to apply WSUS updates to a Windows Server 2008 Core machine.

This led me over to a MSDN article: Searching, Downloading, and Installing Updates, which solved my problems. I’ve posted the text of the MSDN article below for posterity.

Searching, Downloading, and Installing 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.

cscript WUA_SearchDownloadInstall.vbs

Example

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

2 thoughts on “Updating Windows Server 2008 Core

  1. Pingback: The things that are better left unspoken : (Manually) Updating Server Core

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>