Description

Script generates a HTML Hotfix Comparison Table on a set of computers.

Script

PowerShell
Edit|Remove
<#  
  
 NAME: Compare-Hotfixes.ps1  
  
 AUTHOR: Stane Močnik  
 EMAIL: stane.mocnik@mobitel.si  
  
 COMMENT: Script to generate a HTML Hotfix Comparison Table on a set of computers. 
          The account used to run the script must have admin privilegies on them.  
          Before running the script, customize the variable $computers. 
 
          Keep in mind that the script will be slower on larger number of computers, so be patient. 
#>  
 
# ---------------------------------------------------------------------------------------------------- 
$computers = "ComputerName1""ComputerName2""ComputerName3""ComputerName4""ComputerName5"  
# ---------------------------------------------------------------------------------------------------- 
 
$header = "<H3>Hotfix Comparison Table</H3>" 
$head = '<style>BODY{font-family:Verdana;}   
    TABLE{border-width: 2px;border-style: solid;border-color: black;border-collapse: collapse;}   
    TH{font-size:1.0em;padding: 4px;text-align:left;background-color:#FFCCCC}   
    TD{font-size:0.8em; width:20em;text-align:left;padding: 4px;background-color:lightblue}   
    </style>'  
$hotfixes = @() 
$result = @() 
 
foreach ($computer in $computers) 
{ 
    foreach ($hotfix in (get-hotfix -computer $computer | select HotfixId)) 
    { 
        $h = New-Object System.Object 
        $h | Add-Member -type NoteProperty -name "Server" -value $computer 
        $h | Add-Member -type NoteProperty -name "Hotfix" -value $hotfix.HotfixId 
        $hotfixes +$h 
    } 
} 
     
$ComputerList = $hotfixes | Select-Object -unique Server | Sort-Object Server 
 
foreach ($hotfix in $hotfixes | Select-Object -unique Hotfix | Sort-Object Hotfix) 
{ 
    $h = New-Object System.Object 
    $h | Add-Member -type NoteProperty -name "Hotfix" -value $hotfix.Hotfix 
         
    foreach ($computer in $ComputerList) 
    { 
        if ($hotfixes | Select-Object |Where-Object {($computer.server -eq $_.server) -and ($hotfix.Hotfix -eq $_.Hotfix)})  
        {$h | Add-Member -type NoteProperty -name $computer.server -value "*"} 
        else 
        {$h | Add-Member -type NoteProperty -name $computer.server -value "---"} 
    } 
    $result +$h 
} 
 
$result | ConvertTo-Html -head $head -body $header | Out-File $env:temp\InstalledHotfixes.html 
Invoke-Item $env:temp\InstalledHotfixes.html