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

Viewing 2 reply threads
  • Author
    Posts
    • #34237
      Participant
      Topics: 17
      Replies: 18
      Points: 154
      Rank: Participant

      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
      Topics: 0
      Replies: 5
      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
      Topics: 17
      Replies: 18
      Points: 154
      Rank: Participant

      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.

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