0

I'm a complete novice in scripting, so starting off just trying to tweak other scripts. I found a script that checks, downloads, and installs Microsoft updates from command line. Is there a way to include a reboot command when complete, or perhaps daisy chain or pipe in a command after it?

To run it, you type cscript.exe ForceAU.vbs

Is there a way to add a command (shutdown /r) to/after it, or does it have to be a setting in the script itself?

'************************************
'* Force Automatic Update Script    *
'* Goto http://www.intelliadmin.com *
'* for more tools and utilities     *
'************************************
' This script was adapted to only 
' install non-prompting updates
' and not ask any questions
' Original script can be found here:
' http://msdn.microsoft.com/en-us/library/windows/desktop/aa387102(v=vs.85).aspx

On Error Resume Next

function IsSecurityUpdate(Update)
 Set Categories = Update.Categories
 sName = lcase(Categories.Item(0).Name)
 'This works on all languages...the category name is always in english
 if (sName = "security updates" or sName="critical updates") then
  IsSecurityUpdate = TRUE
 else 
  IsSecurityUpdate = FALSE
 end if
end function

Sub ForceUpdate()

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' and     IsHidden=0")

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

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

bFound = FALSE

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    If IsSecurityUpdate(update) then
     WScript.Echo " " & update.Title 
     updatesToDownload.Add(update)
     bFound = TRUE
    end if
Next

if (NOT(bFound)) then
 WScript.Echo "This computer is up to date"
 Exit Sub
end if

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
     if (IsSecurityUpdate(update)) then
         WScript.Echo I + 1 & "> adding:  " & update.Title 
         updatesToInstall.Add(update)   
     end if
    End If
ext


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 sub

ForceUpdate()

if (Err.Number<>0) then
 WScript.Echo "Error Downloading Updates. Check your internet connection"
 end if
pnuts
  • 58,317
  • 11
  • 87
  • 139
Meelos
  • 1

1 Answers1

1

You can try to execute "shutdown -r -t 5" will reboot after 5 seconds.

Maybe something like this:

Set oShell = WScript.CreateObject("WSCript.shell")

oShell.run "cmd shutdown -r -t 5"
OldProgrammer
  • 12,050
  • 4
  • 24
  • 45