-
-
Save jacobludriks/9ca9ce61de251a5476f1 to your computer and use it in GitHub Desktop.
Function WSUSUpdate { | |
$Criteria = "IsInstalled=0 and Type='Software'" | |
$Searcher = New-Object -ComObject Microsoft.Update.Searcher | |
try { | |
$SearchResult = $Searcher.Search($Criteria).Updates | |
if ($SearchResult.Count -eq 0) { | |
Write-Output "There are no applicable updates." | |
exit | |
} | |
else { | |
$Session = New-Object -ComObject Microsoft.Update.Session | |
$Downloader = $Session.CreateUpdateDownloader() | |
$Downloader.Updates = $SearchResult | |
$Downloader.Download() | |
$Installer = New-Object -ComObject Microsoft.Update.Installer | |
$Installer.Updates = $SearchResult | |
$Result = $Installer.Install() | |
} | |
} | |
catch { | |
Write-Output "There are no applicable updates." | |
} | |
} | |
WSUSUpdate | |
If ($Result.rebootRequired) { Restart-Computer } |
Thank you so much for this, you saved me lots of time figuring this all out.
I do have a question though, is there a way to call this on loop after reboots? I'm trying to figure out the easiest way to implement that.
Example:
Run script that gets updates, installs, and restarts if needed. The question is when a server restarts there can sometimes be more updates. Could someone just set this script to run on reboot so it would keep rebooting until there were no more updates?
sorry, the script is provided as-is. feel free to use it as a building block in your own scripts!
Hey that's a cool script. However I can't get it working, all I get is "HResult: 0 and ResultCode: 2", no updates being installed. Any idea why it doesn't seem to work?
Hey that's a cool script. However I can't get it working, all I get is "HResult: 0 and ResultCode: 2", no updates being installed. Any idea why it doesn't seem to work?
as above, provided aas-is. i am no longer a system administrator and do not deal with wsus anymore.
Thank you for this script! I am just starting to learn power shell for my role as a Junior DBA. I ran in to a catch and was hoping you could tell me if my problem is user error or not?
I run the command as listed, however the auto restart does not take place. I am running the script on the machine I am patching, if that matters.
I was also wondering if you found a way to run this against multiple machines at once? Of instance I have to patch 8 DB servers this evening, is it possible to run this on those machines from my laptop (or another server in the domain)?