functions/Resume-WindowsUpdate.ps1

Function Resume-WindowsUpdate {

    [CmdletBinding(SupportsShouldProcess)]
    [OutputType('None', 'WindowsUpdateSetting')]
    [Alias('rwu')]

    Param([Switch]$PassThru)

    $PSDefaultParameterValues["_verbose:Command"] = $MyInvocation.MyCommand
    _verbose $strings.Starting
    _verbose ($strings.UsingModule -f $ModuleVersion)
    _verbose ($strings.PSVersion -f $PSVersionTable.PSVersion)
    _verbose $strings.Testing

    if (Test-IsWindowsUpdatePaused) {
        $PSDefaultParameterValues["_verbose:Command"] = $MyInvocation.MyCommand
        If ($PSCmdlet.ShouldProcess($env:COMPUTERNAME)) {
            _verbose $strings.Restoring
            $base1 = 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\ux\Settings'
            _verbose ($strings.GetSetting -f $base1)
            $settings = 'PauseFeatureUpdatesStartTime', 'PauseQualityUpdatesStartTime',
            'PauseUpdatesExpiryTime', 'PauseFeatureUpdatesEndTime', 'PauseQualityUpdatesEndTime'

           _verbose ($strings.Removing -f $base1)
            foreach ($setting in $settings) {
                _verbose $setting
                Remove-ItemProperty -Path $base1 -Name $setting
            }

            $base2 = 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings'
            $settings = 'PausedFeatureStatus', 'PausedQualityStatus'
            _verbose ($strings.Updating -f $base2)

            foreach ($setting in $settings) {
                _verbose $setting
                Set-ItemProperty -Path $base2 -Name $setting -Value 0 -type DWord  #dword 1 = on 0 = off
            }

            $settings = 'PausedFeatureDate', 'PausedQualityDate'
            _verbose ($strings.Removing -f $base2)

            foreach ($setting in $settings) {
                _verbose $setting
                Remove-ItemProperty -Path $base2 -Name $setting
            }

            if ($PassThru) {
                Get-WindowsUpdateSetting
            }
        } #should process
    } #if paused
    else {
        Write-Host $strings.Enabled -ForegroundColor green
    }
    $PSDefaultParameterValues["_verbose:Command"] = $MyInvocation.MyCommand
    _verbose $strings.Ending

}