public/Install-SCCMUpdates.ps1

function Install-SCCMUpdates {

    Param (
        [Parameter(Mandatory=$true,
                        Position=0)]
        $ComputerName,
        [System.Management.Automation.PSCredential]
        $Credential
    
    )

    $scriptblock = {
        function Start-SCClientInstallUpdate {
            param(
            [Parameter(Mandatory=$false)]
            [string[]] $ComputerName="localhost",
            [Parameter(Mandatory=$false)]
            [System.Management.Automation.PSCredential] 
            [System.Management.Automation.Credential()]
            $Credential,
            [Parameter(Mandatory=$false)]
            [string] $UpdateID="%"
            ) 

            if($(Test-Connection -ComputerName $ComputerName -Count 1 -BufferSize 10 -Quiet))
            {
                if($ComputerName -eq "localhost")
                {
                    [System.Management.ManagementObject[]] $a = Get-CimInstance -query "SELECT * FROM CCM_SoftwareUpdate WHERE UpdateID like '$UpdateID'" -namespace "ROOT\ccm\ClientSDK" -ErrorAction Stop
                    ([wmiclass]'ROOT\ccm\ClientSDK:CCM_SoftwareUpdatesManager').InstallUpdates($a)
                }
                else
                {
                    if($Credential)
                    {
                        Invoke-Command $ComputerName -ScriptBlock{
                            param ([string] $arg1 = $UpdateID)
                            [System.Management.ManagementObject[]] $a = Get-CimInstance -query "SELECT * FROM CCM_SoftwareUpdate WHERE UpdateID like '$arg1'" -namespace "ROOT\ccm\ClientSDK" -ErrorAction Stop
                            ([wmiclass]'ROOT\ccm\ClientSDK:CCM_SoftwareUpdatesManager').InstallUpdates($a)
                        } -ArgumentList $UpdateID -Credential $Credential
                    }
                    else
                    {
                        Invoke-Command $ComputerName -ScriptBlock{
                            param ([string] $arg1 = $UpdateID)
                            [System.Management.ManagementObject[]] $a = Get-CimInstance -query "SELECT * FROM CCM_SoftwareUpdate WHERE UpdateID like '$arg1'" -namespace "ROOT\ccm\ClientSDK" -ErrorAction Stop
                            ([wmiclass]'ROOT\ccm\ClientSDK:CCM_SoftwareUpdatesManager').InstallUpdates($a)
                        } -ArgumentList $UpdateID
                    }
                }
            }    
            else
            {
                Write-Error "The computer you try to manage is offline." -Category ConnectionError
            }
        }#end function
        Start-SCClientInstallUpdate
    }# end script block
    
    #Execute Scriptblock on Computername(s) with set parameters.
    $params = @{
        ScriptBlock = $scriptblock
    }
    if ($ComputerName){
        $params['ComputerName'] = $ComputerName
    }
    if ($Credential){
        $params['Credential'] = $Credential
    }
    Invoke-Command @params

    
    
}