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:
- The offline server is not written to the $ErrorLog = “C:\TEMP\retry.txt”
- 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,