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}

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

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.


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.


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.


0

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

wmic qfe get hotfixid | sls "KB99999"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.