Posted in : Microsoft, Windows Server Av Stina Perbo Utas Översätt med Google ⟶
8 years ago
Verifiera patchar på servrar är något som måste göras och är ofta tidskrävande.
Det finns verktyg från Microsoft samt övervakningssystem för att skanna patchnivå m.m men ibland behövs det endast en snabb första kontroll för att se till att servrarna har blivit patchade.
Jag har skrivit några rader i powershell för att snabbt, asynkront skanna maskiner enligt en array med enkel presentation. Koden inventerar om patchar har installerats de senaste 2 dygnen och listar antalet patchar samt senaste uppstart.
# array of computernames $comps = "SRV-ADFS-01","SRV-MGMT-01" # Async processing, read patch status and boot time $comps | ForEach-Object{ Start-Job -InputObject "$_" -ScriptBlock { $thiscomp = "$input" $last2days = ((Get-Date).AddDays(-2)) Try{ $err = $false $cobj = Get-HotFix -ComputerName $thiscomp -ErrorAction Stop | Where-Object {$_.InstalledOn -gt $last2days} IF($cobj){ $Patched = $true $pcount = $cobj.Count } Else{ $patched = $false $pcount = "N/A" } $BootTime = Get-WmiObject win32_operatingsystem -ComputerName $thiscomp -ErrorAction Stop | select @{LABEL=’LastBootUpTime’;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} $BootTime = $BootTime | select -ExpandProperty LastBootUpTime } Catch{ $Patched = $false $err = $true } @{"Name"=$thiscomp;"Patched"=$Patched;"PatchCount"=$pcount;"LastBoot"=$BootTime;"Error"=$err} } -Name $_ } # Collect data $jobdata = @() $more = $true While($more){ Write-host "." -nonewline #Get-job -State Completed | Receive-Job -keep $jobdata += Get-job -State Completed | Receive-Job Get-Job -HasMoreData $false | Remove-Job If(-not(Get-Job)){$more = $false} Start-sleep 2 } # Make it more readable $DataTable = new-object System.Data.dataTable $jobdata[0].Keys | ForEach-Object{$DataTable.Columns.Add($_) | Out-Null} $jobdata | ForEach-Object{ $row = $DataTable.NewRow() $thisobj = $_ $thisobj.Keys | ForEach-Object{ $row["$_"] = $thisobj.$_ } $DataTable.Rows.Add($row) } $DataTable | Out-GridView -Title "Patch status"
Vid körning skapas jobb upp för seriell hantering.
Efter körning presenteras jobben i en sökbar lista eller kan exporteras till en fil.
Vid fel (behörigheter, nätverk etc) fylls error kollumnen i och dessa bör hanteras manuellt.
Tags : Microsoft, Patch, PowerShell
Personlig rådgivning
Vi erbjuder personlig rådgivning med författaren för 1400 SEK per timme. Anmäl ditt intresse i här så återkommer vi så snart vi kan.
Add comment