WSH Script zum installieren von Windows Updates

Dies ist ein WSH Script das die Windowsupdates installiert die schon auf dem Computer heruntergeladen wurden.

Will mann vorher alle Upates per Befehl runterladen kann man „wuauclt /detectnow“ machen. Danach muss man aber warten bis dieses im Hintergrund heruntergeladen wurden. Indikator hierfür ist ob der Task wuauclt.exe noch aktiv ist.

Dies ist das Script:

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)

Next

If searchResult.Updates.Count = 0 Then
        WScript.Quit
End If

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

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then

    Else
        If update.EulaAccepted = false Then

                update.AcceptEula()
                addThisUpdate = true

        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then

    WScript.Quit
End If

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

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

rebootMayBeRequired = false

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        updatesToInstall.Add(update)	
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then

    WScript.Quit
End If

    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

 

Setzt man einen WSUS ein kann man im Anschluss noch einen „wuauclt /reportnow“ absetzen um dem WSUS die aktuellen Updateinformationen zukommen zu lassen.

Schreibe einen Kommentar