3 Hotfixe

Beispiel 1: Installierte Hotfixe anzeigen (WMI / Cmdlet / CIM)

Set-StrictMode -Version "2.0"
Clear-Host

Get-WmiObject "Win32_QuickFixEngineering" | Select -First 2 | Format-Table -auto
""
Get-HotFix | Select -First 2 | Format-Table -Auto
""
Get-CimInstance "Win32_QuickFixEngineering" | Select -First 2 | `
                  FT Csname,Description, HotFixId,InstalledBy,InstalledOn -Auto
#mögliche Ausgabe

Source     Description HotFixID InstalledBy    InstalledOn        
------     ----------- -------- -----------    -----------        
MyClient01 Update      KB975541 WW002\z00365zx 03.04.2013 00:00:00
MyClient01 Update      KB974405 WW002\z00365zx                    


Source     Description HotFixID InstalledBy    InstalledOn        
------     ----------- -------- -----------    -----------        
MyClient01 Update      KB975541 WW002\z00365zx 03.04.2013 00:00:00
MyClient01 Update      KB974405 WW002\z00365zx                    


Csname     Description HotFixId InstalledBy    InstalledOn        
------     ----------- -------- -----------    -----------        
MyClient01 Update      KB975541 WW002\z00365zx 03.04.2013 00:00:00
MyClient01 Update      KB974405 WW002\z00365zx                   


Alle 3 Varianten liefern gleiche oder doch sehr ähnliche Ergebnisse zurück. Hinter dem Cmdlet "Get-Hotfix" steckt natürlich die WMI-Classe "Win32_HotFixEngineering", was man mit Get-Member leicht herausfinden kann.

IT-Knowledge: CIM or WMI?

Beispiel 2: Ausgabe der installierten Hotfixe (mehrspaltig)

Set-StrictMode -Version "2.0"
Clear-Host

Function Get-InstalledHotfixes{
  #Auslesen der installierten Hotfixe in ein Array
  $HotFixes = Get-Hotfix -Description Security* -computername "."
 
  <#Alternativ mit der WMIKlasse 'Win32_QuickFixEngineering'
  $HotFixes = Get-WmiObject -class Win32_QuickFixEngineering -computername "." `
  -filter "Description like '%Security%'"
  #>

  #Sortieren der HotFixe
  $HotFixes = $Hotfixes | Sort-Object -property HotFixID

  #Ausgabe

  #Ausgabemöglichkeit 1
  $HotFixes | Format-Wide {$_.HotFixID} -AutoSize -Force

  #Ausgabemöglichkeit 2
  $Hotfixes | Format-Wide {$_.HotFixID} -Column 4 -Force


  #Ausgabemöglichkeit 3  (ab Powershell V3.0)
  $ColumnCount = 4
  For ($i=0; $i -lt $HotFixes.count; $i += $ColumnCount)
    { $HotFixes[$i..($i+$ColumnCount-1)].HotFixID -join "`t"}
}

Get-InstalledHotfixes

#mögliche Ausgabe auf Windows7 (gekürzt)

KB2305420    KB2393802    KB2479943    KB2491683
KB2506212    KB2509553    KB2511455    KB2532531
...
KB2789645    KB2790113    KB2790655    KB2792100
KB2797052    KB2799494

 

Beispiel 3: Ausgabe der installierten Hotfixe (mehrspaltig)

Die Ausgabe dieses Beispiels funktioniert auch in PS V2.0

Set-StrictMode -Version "2.0"
Clear-Host

#Auslesen der installierten Hotfixe in ein Array
$WmiHotfixes = @()
$myHotfixes = @()
$Query= "Select HotFixId From  Win32_QuickFixEngineering where Description like '%Security%'"
$wmiHotFixes = Get-WmiObject -Query $Query  -computername "."
$wmiHotFixes | Foreach {
   $myHotFixes += $_.HotFixID
   }
   
$ColumnCount = 4
For ($i=0; $i -lt $myHotFixes.count; $i += $ColumnCount)
  {
  ($myHotFixes[$i..($i+$ColumnCount-1)]) -join "`t"
  }