functions/Resume-WindowsUpdate.ps1
Function Resume-WindowsUpdate { [CmdletBinding(SupportsShouldProcess)] [OutputType('None', 'WindowsUpdateSetting')] [Alias('rwu')] Param([Switch]$PassThru) Write-Verbose "[$((Get-Date).TimeOfDay)] Starting $($MyInvocation.MyCommand)" Write-Verbose "[$((Get-Date).TimeOfDay)] Testing if Windows Update is paused" if (Test-IsWindowsUpdatePaused) { If ($PSCmdlet.ShouldProcess($env:COMPUTERNAME)) { Write-Verbose "[$((Get-Date).TimeOfDay)] Restoring Windows Update Settings" $base1 = 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\ux\Settings' $settings = 'PauseFeatureUpdatesStartTime', 'PauseQualityUpdatesStartTime', 'PauseUpdatesExpiryTime', 'PauseFeatureUpdatesEndTime', 'PauseQualityUpdatesEndTime' Write-Verbose "[$((Get-Date).TimeOfDay)] Removing registry values from $base1" foreach ($setting in $settings) { Write-Verbose "[$((Get-Date).TimeOfDay)] ..$setting" Remove-ItemProperty -Path $base1 -Name $setting } $base2 = 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings' $settings = 'PausedFeatureStatus', 'PausedQualityStatus' Write-Verbose "[$((Get-Date).TimeOfDay)] Updating registry values from $base2" foreach ($setting in $settings) { Write-Verbose "[$((Get-Date).TimeOfDay)] ..$setting" Set-ItemProperty -Path $base2 -Name $setting -Value 0 -type DWord #dword 1 = on 0 = off } $settings = 'PausedFeatureDate', 'PausedQualityDate' Write-Verbose "[$((Get-Date).TimeOfDay)] Removing registry values from $base2" foreach ($setting in $settings) { Write-Verbose "[$((Get-Date).TimeOfDay)] ..$setting" Remove-ItemProperty -Path $base2 -Name $setting } if ($PassThru) { Get-WindowsUpdateSetting } } #should process } #if paused else { Write-Host 'Windows Updates are already enabled' -ForegroundColor green } Write-Verbose "[$((Get-Date).TimeOfDay)] Ending $($MyInvocation.MyCommand)" } |