James's profile"Funner" is not a word.BlogListsNetwork Tools Help

Blog


    August 15

    Powershell and Windows Update (No forms)

    This is a re-working of a previous script I wrote to install updates on your computer. This version does not use WinForms.
     
    ######################################################################################################################################
    # Windows Update through Powershell (No Forms) v1.0 ######################################################################################################################################
    clear-host
    Write-host "Starting Update Process..." -foregroundcolor blue
    Write-host ""
    $UpdateSession = New-Object -com Microsoft.Update.Session
    $UpdateSearcher = $UpdateSession.CreateupdateSearcher()
    $SearchResult =  $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0")
    $UpdateLowNumber = 0
    $UpdateHighNumber = 1
    $NumberofUpdates = $searchResult.Updates.Count
    while ($UpdateHighNumber -le $NumberofUpdates) {
    $UpdatesToDownload = New-Object -com Microsoft.Update.UpdateColl
    $Update = $searchResult.Updates.Item($UpdateLowNumber)
    if ($Update.EulaAccepted -eq 0) {$Update.AcceptEula()}
    [void]$UpdatesToDownload.Add($Update)
    $Downloader = $UpdateSession.CreateUpdateDownloader()
    $Downloader.Updates = $UpdatesToDownload
    [void]$Downloader.Download()
    $UpdatesToInstall = New-Object -com Microsoft.Update.UpdateColl
    [void]$UpdatesToInstall.Add($Update)
    $Title = $update.Title
    $KBArticleIDs = $update.KBArticleIDs
    $SecurityBulletinIDs = $update.SecurityBulletinIDs
    $MsrcSeverity = $update.MsrcSeverity
    $LastDeploymentChangeTime = $update.LastDeploymentChangeTime
    $MoreInfoUrls = $update.MoreInfoUrls
    Write-host "Installing Update $UpdateHighNumber of $NumberofUpdates"
    Write-host "Title: $Title"
    if ($KBArticleIDs -ne "") {Write-host "KBID: $KBArticleIDs"}
    if ($SecurityBulletinIDs -ne "") {write-host "Security Bulletin: $SecurityBulletinIDs"}
    if ($MsrcSeverity -eq "Critical") {Write-host "Rating: $MsrcSeverity" -foregroundcolor red} else {Write-host "Rating: $MsrcSeverity"}
    if ($LastDeploymentChangeTime -ne "") {Write-host "Dated: $LastDeploymentChangeTime"}
    if ($MoreInfoUrls -ne "") {Write-host "$MoreInfoUrls"}
    $Installer = $UpdateSession.CreateUpdateInstaller()
    $Installer.Updates = $UpdatesToInstall
    $InstallationResult = $Installer.Install()
    Write-host "--------------------------------------------"
    if ($InstallationResult.ResultCode -eq "2") {Write-host "  Installation Succeeded" -foregroundcolor green}  else {Write-host "  INSTALLATION FAILED, check event log for details" -foregroundcolor red}
    if ($InstallationResult.RebootRequired -eq "False") {Write-host "  Reboot not required" -foregroundcolor green} else {Write-host "  REBOOT REQUIRED" -foregroundcolor red}
    Write-host "--------------------------------------------"
    Write-host ""
    Write-host ""
    $Title = ""
    $KBArticleIDs =  ""
    $SecurityBulletinIDs =  ""
    $MsrcSeverity =  ""
    $LastDeploymentChangeTime =  ""
    $MoreInfoUrls =  ""
    $UpdateLowNumber = $UpdateLowNumber + 1
    $UpdateHighNumber = $UpdateHighNumber + 1
    if ($ProgressValue -lt $NumberofUpdates) {$ProgressValue = $ProgressValue + 1}
    }
    $ComputerStatus = New-Object -com Microsoft.Update.SystemInfo
     if ($ComputerStatus.RebootRequired -eq 1) {cmd /c $env:WinDir\System32\Shutdown.exe -r -f -t 10 -c "Patching Complete."}