List Available Patches (windows update) – Remote machine

Use this script to check if a remote machine has any new windows update available

 

<#
.SYNOPSIS
This script will list all available windows updates
.PARAMETER URL
User the Computer parameter to specify the Computer to remotely list  windows updates .
#>

function install-OSUpdate {
        [CmdletBinding()]

        param (

        [parameter(Mandatory=$true,Position=1)]
        [string[]]$computer


        )

                                                                                                                                                                                                                        ForEach ($c in $computer){

    
    
        #install pswindows updates module on remote machine
        [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
        $nugetinstall = invoke-command -ComputerName $c -ScriptBlock {Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force}

        invoke-command -ComputerName $c -ScriptBlock {
            [Net.ServicePointManager]::SecurityProtocol += [Net.SecurityProtocolType]::Tls12
            install-module pswindowsupdate -force
        }

        invoke-command -ComputerName $c -ScriptBlock {Import-Module PSWindowsUpdate -force}

        Do{
            #Reset Timeouts
            $connectiontimeout = 0
            $updatetimeout = 0
        
            #starts up a remote powershell session to the computer
            do{
                $session = New-PSSession -ComputerName $c
                "reconnecting remotely to $c"
                sleep -seconds 10
                $connectiontimeout++
            } until ($session.state -match "Opened" -or $connectiontimeout -ge 10)

            #retrieves a list of available updates

            "Checking for new updates available on $c"

            $updates = invoke-command -session $session -scriptblock {Get-wulist -MicrosoftUpdate -verbose}

            #counts how many updates are available

            $updatenumber = ($updates.kb).count
            write-host "$updatenumber updates available"

            #if there are available updates proceed with installing the updates and then reboot the remote machine

            
   

        }until($updates)

    

        "Windows is now up to date on $c"

        }


}

 

Exit mobile version