Solved

VBS Windows Update script

Posted on 2011-02-17
5
1,182 Views
Last Modified: 2012-06-27
I am writing a VBS script for use with MDT. This script is supposed to pull down and install all available windows updates for Windows XP clients. Occasionally I receive error 0x80240016, which if I understand correctly indicates that a reboot is necessary before a given update will install. My question is how can I handle this gracefully, without a reboot for every single update the requests one? As it stands my script errors out by throwing 0x80240016.
Based on my logging it looks like the code is stopping on the line 'Set installationResult = installer.Install()" line.
Function DoUpdate()

	Set updateSession = CreateObject("Microsoft.Update.Session")
	Set updateSearcher = updateSession.CreateupdateSearcher()
	Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")
	Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
	Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

	For I = 0 to searchResult.Updates.Count-1
		Set update = searchResult.Updates.Item(I)
		updatesToDownload.Add(update)
		Set downloader = updateSession.CreateUpdateDownloader() 
		downloader.Updates = updatesToDownload
		downloader.Download()
		updatesToDownload.Clear()

		If update.IsDownloaded = true Then
			updatesToInstall.Add(update)	
			Set installer = updateSession.CreateUpdateInstaller()
			installer.Updates = updatesToInstall
			Set installationResult = nothing 
			Set installationResult = installer.Install()
			updatesToInstall.Clear()
			
			If ( installationResult is nothing OR installationResult.ResultCode <> 2 OR installationResult.RebootRequired ) Then
				oEnvironment.Item("SMSTSRebootRequested") = "true"
				oEnvironment.Item("SMSTSRetryRequested") = "true"
				If ContinueReboot( update.Title ) Then
					' Reboots aren't generally allowed from standard Windows Updates
					oLogging.CreateEntry "Immediate Reboot Allowed for " & update.Title, LogTypeInfo
					Exit For
				Else
					oLogging.CreateEntry "Immediate Reboot denied for " & update.Title, LogTypeInfo
				End If
			End If
		End If
	Next

End Function

Open in new window

0
Comment
Question by:timbrigham
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 47

Assisted Solution

by:Donald Stewart
Donald Stewart earned 100 total points
ID: 34920997
It appears that error means something other than a pending reboot



Error message when you try to install updates from the Windows Update Web site or from the Microsoft Update Web site: "0x80240016"

http://support.microsoft.com/kb/957307
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 400 total points
ID: 34922882
Hi, if the article Dave pointed to is correct, then perhaps you can detect the error, and restart wuauserv, and retry the install....

Regards,

Rob.
Function DoUpdate()

	Set updateSession = CreateObject("Microsoft.Update.Session")
	Set updateSearcher = updateSession.CreateupdateSearcher()
	Set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")
	Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
	Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

	For I = 0 to searchResult.Updates.Count-1
		Set update = searchResult.Updates.Item(I)
		updatesToDownload.Add(update)
		Set downloader = updateSession.CreateUpdateDownloader() 
		downloader.Updates = updatesToDownload
		downloader.Download()
		updatesToDownload.Clear()

		If update.IsDownloaded = true Then
			updatesToInstall.Add(update)	
			Set installer = updateSession.CreateUpdateInstaller()
			installer.Updates = updatesToInstall
			Set installationResult = nothing 
			On Error Resume Next
			Set installationResult = installer.Install()
			If Err.Number = 80240016 Then
				oLogging.CreateEntry "Restarting wuauserv service and retrying install of " & update.Title, LogTypeInfo
				Set objShell = CreateObject("WScript.Shell")
				objShell.Run "net stop wuauserv", 0, True
				WScript.Sleep 3000
				objShell.Run "net start wuauserv", 0, True
				WScript.Sleep 3000
				Err.Clear
				On Error Resume Next
				Set installationResult = installer.Install()
			End If
			updatesToInstall.Clear()
			
			If ( installationResult is nothing OR installationResult.ResultCode <> 2 OR installationResult.RebootRequired ) Then
				oEnvironment.Item("SMSTSRebootRequested") = "true"
				oEnvironment.Item("SMSTSRetryRequested") = "true"
				If ContinueReboot( update.Title ) Then
					' Reboots aren't generally allowed from standard Windows Updates
					oLogging.CreateEntry "Immediate Reboot Allowed for " & update.Title, LogTypeInfo
					Exit For
				Else
					oLogging.CreateEntry "Immediate Reboot denied for " & update.Title, LogTypeInfo
				End If
			End If
		End If
	Next

End Function

Open in new window

0
 
LVL 47

Expert Comment

by:Donald Stewart
ID: 34922902
Who's Dave ?  :^)
0
 
LVL 65

Expert Comment

by:RobSampson
ID: 34922946
Sorry, my bad....somewhere along the line I thought I saw that was your name....I apologise if I'm wrong...
0
 
LVL 1

Author Closing Comment

by:timbrigham
ID: 34945422
Thanks gentlemen. The examples given for the error handling were just the ticket.
0

Featured Post

Edgartown IT Case Study

Learn about Edgartown's quest to ensure the safety and security of the entire town's employee and citizen data. Read the case study!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Previously, on our Nano Server Deployment series, we've created a new nano server image and deployed it on a physical server in part 2. Now we will go through configuration.
Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question