Wie kann ich mein System über die Befehlszeile abfragen, um festzustellen, ob ein KB-Patch installiert ist?

Antworten:

64

Darüber hinaus systeminfogibt es auch wmic qfe

Beispiel:

wmic qfe get hotfixid | find "KB99999"
wmic qfe | find "KB99999"

Es gibt auch update.exe

Oder von Powershell, passen Sie es einfach an Ihre Bedürfnisse an:

Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}
Skrap
quelle
3
Wie ich es in der Vergangenheit gemacht habe. Mit psexec ist das ganz einfach, aber denken Sie daran, dass der Befehl find möglicherweise nur dann funktioniert, wenn Sie stdout anstelle des seltsamen hybriden Mistes angeben, der regelmäßig ausgespuckt wird wmic. wmic /output:stdout qfe get hotfixid | find "KB99999".
songei2f
Muss ich es als Administrator ausführen? Scheint, als ob mir andere Orte sagen, dass ich etwas brauche. Also möchte ich das überprüfen.
José
Aus irgendeinem Grund wird bei der Verwendung von "find" ein falscher Formatfehler angezeigt. Versuchte einfache und doppelte Anführungszeichen.
Scott
@Scott (und andere, bei denen dasselbe Problem auftritt): Für das Cmdlet PS find ist ein Parameter erforderlich. Die find.exe, die Sie von cmd ausführen, funktioniert nicht.
Mastacheata
17

PowerShell 2.0 enthält das Cmdlet get-hotfix, mit dem auf einfache Weise überprüft werden kann, ob ein bestimmter Hotfix auf dem lokalen Computer oder einem Remotecomputer installiert ist. Ein Beispiel für die grundlegende Syntax ist

get-hotfix -id KB974332
raeez
quelle
Dies ist in
Version 4
Es ist definitiv in v5.1 vorhanden. Und hier ist die Hilfeseite
Ant
6

Wenn Sie "systeminfo" in einem CMD-Fenster ausführen, werden eine Reihe von Statistiken zu Ihrem System einschließlich der installierten Patches abgerufen.

kam
quelle
3

Einige andere Möglichkeiten: Grep% windir% \ Windowsupdate.log für die KB-Nummer. Oder verwenden Sie reg.exe, um die entsprechenden Installationsschlüssel zu exportieren.

Tonny
quelle
1
Mein Windows kam nicht mit grep. Ich muss verwenden find.
Jscott
@jscott: Ich weiß, dass grep unter Windows kein Standard ist :-) Find oder findstr wären besser geeignet. Aber ich habe das Wort grep hier wie in "to grep" verwendet, um den Prozess anzuzeigen, anstatt wörtlich das Dienstprogramm "grep" zu meinen. Die Verwendung von grep als Verb ist in den Unix-Kreisen, in denen ich normalerweise arbeite, sehr verbreitet. Daher habe ich den Begriff mehr oder weniger verwendet, ohne zu glauben, dass er für einen Windows-Benutzer seltsam erscheint.
Tonny
Schätzen Sie, dass dies eine alte Antwort ist, aber in% windir% \ Windowsupdate.log werden anscheinend nur Aktualisierungen für den letzten Monat angezeigt. Vielleicht, weil es so konfiguriert ist, dass es nach dieser Zeit abgeschaltet wird, aber ich weise nur darauf hin, dass in einigen Fällen das Nichtfinden in diesem Protokoll nicht darauf hindeutet, dass es nicht im System vorhanden ist.
Glaukon
0
wmic qfe list /format:htable>C:\PatchList%Computername%.html

Der obige Befehl gibt die Ausgabe im HTML-Format aus.

vijay
quelle
0

Wenn Sie an einer PowerShell-Eingabeaufforderung nach wmic gefragt werden, verwenden Sie einfach Select-String (oder sls).

wmic qfe get hotfixid | sls "KB99999"

Xopher
quelle