[PowerShell] Windows Update History und Update List

DPXone

Lieutenant
Registriert
Mai 2009
Beiträge
552
Hi,

wollte nur mal eine Möglichkeit durch PowerShell darbieten, in welcher man die Update History und die Update Liste (Installierte Updates/Verfügbare Updates) anzeigen lassen kann.
Bin leider selbst noch nicht ganz dahinter gestiegen, was genau die bereits installierten Updates in der Update-Liste sollen. Ist ja teilweise ein Teil der Update History.
Falls jemand Infos hat, wäre ich dankbar.

Bei dem Script öffnen sich zwei GridViews; eins für die Update History und eins für die Update List.
In der Update List sieht man zudem, bei welchen Treiber man über den Geräte-Manager per Rechtsklick -> Treiber aktualisieren ein Update durchführen könnte.

PowerShell:
$UpdateSession = New-Object -ComObject 'Microsoft.Update.Session'
$UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
$UpdateHistoryCount = $UpdateSearcher.GetTotalHistoryCount()

$ServerSelection = @{ 0 = 'Default' ; 1 = 'ManagedServer' ; 2 = 'WindowsUpdate' ; 3 = 'Others' }
$ResultCode = @{ 0 = 'Not Started' ; 1 = 'In Progress' ; 2 = 'Succeeded' ; 3 = 'Succeeded With Errors' ; 4 = 'Failed' ; 5 = 'Aborted' }
$UpdateSearcherCriteria = 'IsInstalled=0 or IsInstalled=1'


write-progress -Activity 'Windows Update Query' -Status 'Checking update history and update list'

$UpdateHistory = $UpdateSearcher.QueryHistory(0 , $UpdateHistoryCount) | Select Date ,
@{ n = 'Title & Description' ; e = {
        $Title = $_.Title
        $TitleLen = $Title.Length
        $SplitDescription = [regex]::Split($_.Description , "\.\W")
        $Description = $SplitDescription -join ".`r`n"
        "$Title`r`n$("-"*$TitleLen)`r`n$Description`r`n"
    }
} ,
@{ n = 'ResultCode' ; e = { $ResultCode[$_.ResultCode] } } ,
@{ n = 'ServerSelection' ; e = { $ServerSelection[$_.ServerSelection] } } , SupportURL


$Updates = $UpdateSession.CreateupdateSearcher().Search($UpdateSearcherCriteria).Updates | Select LastDeploymentChangeTime ,
@{ n = 'Title & Description' ; e = {
        $Title = $_.Title
        $TitleLen = $Title.Length
        $SplitDescription = [regex]::Split($_.Description , "\.\W")
        $Description = $SplitDescription -join ".`r`n"
        "$Title`r`n$("-"*$TitleLen)`r`n$Description`r`n"
    }
} , IsInstalled , IsDownloaded , IsBeta , IsHidden , IsMandatory , IsUninstallable , DriverManufacturer , DriverProvider ,
DriverModel , DriverHardwareID , DriverVerDate , EulaAccepted , ReleaseNotes , Type, AutoDownload , SupportUrl


$UpdateHistory | sort Date -Descending | ogv -Title 'Update History'
$Updates | sort LastDeploymentChangeTime -Descending | ogv -Title 'Updates - Installed & Not Installed'


# © DPXone, 2017
 
Zuletzt bearbeitet:
stimmt die Liste mit installierter Updates mit dem WMI Befehl überein? "wmic qfe get" und in der Powershell einfach "Get-HotFix" geben zumindest das Selbe Ergebnis :)
 
Zuletzt bearbeitet:
Die HotFixes durch den WMI-Query sind da jetzt nicht mit eingeschlossen
Kann da aber gerne noch was basteln. ;)
Ergänzung ()

Allerdings bietet der WMI-Query (PowerShell macht ja durch Get-HotFix nichts anders) nicht sehr viele Infos.
Falls jemand hilfreiche Infos hierzu hat, gerne her damit.
 
DPXone schrieb:
Hi,
Bin leider selbst noch nicht ganz dahinter gestiegen, was genau die bereits installierten Updates in der Update-Liste sollen. Ist ja teilweise ein Teil der Update History.
Falls jemand Infos hat, wäre ich dankbar.

Alles klar.
Update History = Erfolgreich installierte Updates und Updates, dessen Installation fehllerhaft waren
Update-Liste = Updates, die für das System bestimmt sind. Per Filter 'IsInstalled=0 or IsInstalled=1' werden sowohl installierte, als auch nicht-installierte Updates angezeigt.

War an dem Tag nicht ganz aufm Dampfer. Ist ja eigentlich logisch ;P
 
Zuletzt bearbeitet:
Zurück
Oben