Warum fehlen in Powershell "get-hotfix" und "wmic qfe list" installierte Updates?

32115
a paid nerd

Ich versuche, ein Skript zu schreiben, um sicherzustellen, dass ein bestimmter Hotfix installiert ist. Gibt auf einem unserer Testcomputer unter Windows 8.1 get-hotfixeine unvollständige Liste von Hotfixes zurück:

enter image description here

Im Kontrollfeld "Programme und Funktionen" werden jedoch zahlreiche Patches angezeigt:

enter image description here

Alle unsere anderen Testmaschinen, einschließlich anderer, die mit Windows 8.0 und 8.1 installiert sind, funktionieren einwandfrei. Irgendeine Idee, warum das so ist? Wie kann ich eine vollständige Liste der Hotfixes von Powershell erhalten?

Bearbeiten: wmic qfe list zeigt nur die gleichen vier Hotfixes an get-hotfix.

5
Danke @PJMahoney - Ich habe diese Vorschläge ohne Erfolg ausprobiert. `get-wmiobject -class win32_quickfixengineering` zeigt die gleichen Ergebnisse wie` get-hotfix`. a paid nerd vor 8 Jahren 0

2 Antworten auf die Frage

9
bentek

Ich glaube, das Get-HotfixCommandlet nutzt die Win32_QuickFixEngineeringWMI-Klasse, um Windows-Updates aufzulisten, gibt jedoch nur die von Component Based Servicing (CBS) bereitgestellten Updates zurück . Updates, die vom Microsoft Windows Installer (MSI) oder der Windows-Update-Site bereitgestellt werden, werden von Get-Hotfix/ nicht zurückgegeben Win32_QuickFixEngineering.

Sie können versuchen, die Windows Update-API über PowerShell wie im folgenden Beispiel zu verwenden. Probieren Sie es aus und lassen Sie uns wissen, wenn die fehlenden Updates angezeigt werden.

$Session = New-Object -ComObject Microsoft.Update.Session $Searcher = $Session.CreateUpdateSearcher() $Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title 

BEARBEITEN: Um die Ergebnisse zu durchsuchen, können Sie das Where-Object Commandlet (oder den Alias Where) verwenden und nach einem bestimmten Hotfix filtern:

$Searcher.Search("IsInstalled=1").Updates | Where {$_.Title -like "*KB2760587*"} | ft date,title 
Danke @bentek! Das tut es. Da ich bei Powershell ziemlich neu bin, möchten Sie mir dann auch eine gute Möglichkeit zeigen, diese Ergebnisse abzufragen, um herauszufinden, ob ein bestimmter Hotfix enthalten ist. a paid nerd vor 8 Jahren 0
Ist dies mit älteren Windows-Versionen weniger kompatibel als `get-hotfix`? a paid nerd vor 8 Jahren 0
Meine Antwort wurde bearbeitet, um eine einfache Abfrage nach einem bestimmten Hotfix aufzunehmen. bentek vor 8 Jahren 1
Tatsächlich werden Updates als installiert gemeldet, die nicht unter Programme und Funktionen -> Installierte Updates aufgeführt sind. a paid nerd vor 8 Jahren 0
Anscheinend möchte ich $ Searcher.Search ("IsInstalled = 1") verwenden. Updates | ft -a Datum, Titel` statt. a paid nerd vor 8 Jahren 1
Netter Fang. Ich habe den Beispielcode entsprechend aktualisiert. bentek vor 8 Jahren 0
FYI: Siehe auch: "Microsoft Update Client-Installationsverlauf" unter https://social.technet.microsoft.com/wiki/contents/articles/4197.how-to-list-all-of-the-windows-and-software -updates-apply-to-a-computer.aspx für eine andere Version dieser Lösung (bei mir ist das oben gescheitert, aber es führte mich zu diesem Technet-Link, der funktionierte). JohnLBevan vor 7 Jahren 1
@bentek Ich habe einige Verständnisprobleme. Auf den Seiten werden Clients wie msi oder Windows Update erwähnt, die ihre Pakete an CBS übergeben, die dann die Installation ausführt. Was bedeutet "von CBS geliefert" in diesem Zusammenhang? Es liest sich eher, da die beiden rund um die Uhr zusammenarbeiten. Danke auch für das Skript, es scheint zumindest das gewünschte Update zurückzugeben, aber es dauert buchstäblich Stunden, bis es fertig ist ... Warum ist das so? taclight vor 6 Jahren 0
1
Root Loop

Sie müssen verschiedene Methoden verwenden, um die mit verschiedenen Methoden installierten Updates aufzulisten. wie von wsus oder configmgr installiert

Schauen Sie sich hier um

https://social.technet.microsoft.com/wiki/contents/articles/4197.wie-ur-auf-der-alle-der-der-windows-und-software-updates-applied-auf-a-computer.aspx