Modifying PowerShell script for listing latest windows update on each servers

Welcome Forums General PowerShell Q&A Modifying PowerShell script for listing latest windows update on each servers

This topic contains 2 replies, has 2 voices, and was last updated by

 
Participant
2 years, 9 months ago.

  • Author
    Posts
  • #34237

    Participant
    Points: 63
    Rank: Member

    People,

    I've come up with this script below to perform:

    Grab the content of text file for list of server name
    Test / check if the server is online, if it is not, then write the error in $ErrorLog = "C:\TEMP\retry.txt"
    For all online server grab the HotfixID, Computername, InstalledOn, InstalledBy, OSVersionattributes
    Export to CSV file as the result.
    Here's the script that I can come up so far with the way to call the function:

    function Get-PatchLevel1{
    #[CmdletBinding()]
    # delete or edit select-object 1 in the hotfix parameter to scope the output with specific hotfix number
    param (
    $serverlist = @(),
    [string]$ErrorLog = "C:\TEMP\retry.txt",
    [switch]$LogErrors
    )
    $serverlist |
    % {
    $server = $_
    If(Test-Connection -quiet -computername $server) {
    $ADC= Get-ADComputer $server –Property OperatingSystem
    $hotfix = Get-HotFix -ComputerName $server |
    #where-object {$_.hotfixid -ne "KB3116900"} |
    Select hotfixid, description, installedby, @{label="InstalledOn";e={[DateTime]::Parse($_.psbase.properties["installedon"].value, $([System.Globalization.CultureInfo]::GetCultureInfo("en-AU")))}} |
    Sort-Object -Property InstalledOn |
    Select-Object -Last 1

    New-Object PSObject -Property @{
    Computername = $server
    OSVersion = $ADC.OperatingSystem
    Hotfix = $hotfix.HotfixID
    InstalledOn = $hotfix.InstalledOn
    InstalledBy = $hotfix.installedby
    }
    }
    } | Export-Csv C:\TEMP\PatchLevelAdServers1.csv -NoTypeInformation -UseCulture
    }

    And this is how I call the function:

    Get-PatchLevel1 -serverlist "TESTAPPS01-VM", "DEVSQL02-VM", "PRODDC02-VM", "PRODNAS05-VM"

    However, there are some issues here:

    1. The offline server is not written to the $ErrorLog = "C:\TEMP\retry.txt"
    2. When compared with the Control Panel\System and Security\Windows Update\View update history the result is not the same thus confusing me ?

    Any kind of help would be greatly appreciated.

    Thanks,

  • #34243

    Participant
    Points: 0
    Rank: Member

    U didn't use Else Statement

    Try this
    New-Object PSObject -Property @{
    Computername = $server
    ....
    InstalledBy = $hotfix.installedby
    } | Export-Csv C:\TEst\PatchLevelAdServers1.csv -NoTypeInformation -UseCulture -Append
    } Else { Write-Output $server | Out-File $ErrorLog -Append }
    }#Foreach
    }#Function

  • #34346

    Participant
    Points: 63
    Rank: Member

    Vincent,

    Thanks for the reply.

    That does the trick for #1. What about number 2 ?

    The script still returns all result of the patch installed, I just need to get the latest patch that was installed on the servers.

The topic ‘Modifying PowerShell script for listing latest windows update on each servers’ is closed to new replies.