Got annoyed this week with some windows update configuration issues, so wrote this powershell to pull the relevant configuration information from the windows registry;
function get-windowsupdatestatus{
param( $COMPUTERNAME ) $report = invoke-command -ComputerName $COMPUTERNAME -ScriptBlock { $days = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" $auoptions = "Notify before download","Automatically download and notify of installation","Automatically download and schedule installation","Automatic Updates is required and users can configure it" $temp= "" | select UpdateServer, UpdateDay, UpdateTime, NoAutoRebootWithLoggedOnUsers, NoAutoUpdate, UpdateOptions $temp.updateserver = (get-itemproperty HKLM:\\Software\Policies\Microsoft\Windows\WindowsUpdate).wuserver $schedule = get-itemproperty HKLM:\\Software\Policies\Microsoft\Windows\WindowsUpdate\AU $temp.NoAutoRebootWithLoggedOnUsers = $schedule.NoAutoRebootWithLoggedOnUsers $temp.NoAutoUpdate = $schedule.NoAutoUpdate $temp.UpdateOptions = $auoptions[$schedule.AUOptions -2] $temp.updateday = $days[$schedule.ScheduledInstallDay -1] $temp.updatetime = (get-date -Hour ($schedule.ScheduledInstallTime).tostring().padleft(2,'0') -Minute 00 -Second 00 -Format "HH:mm") $temp } $report | select PScomputername, NoAutoRebootWithLoggedOnUsers,NoAutoUpdate,UpdateDay, UpdateTime,UpdateServer, UpdateOptions } |
This allowed us to see at a glance where the issues were across all our servers.
The script only runs in a single thread so it's slow. But it wouldn't be hard to multi-thread. In our case there were less than 100 servers to be reviewed so it wasn't a priority. If there's demand for a faster version we'll make it happen. Might be a good demo of how to take a single threaded powershell function and make it multi-threaded.
No comments:
Post a Comment