KBパッチがインストールされているかどうかを確認するために、コマンドライン経由でシステムにクエリを実行するにはどうすればよいですか?


回答:


64

ほかにsysteminfoもあります wmic qfe

例:

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

もあります update.exe

または、Powershellから、ニーズに合わせて調整します。

Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}

3
過去にどうやってやったか。psexecを使えば非常に簡単ですが、奇妙なハイブリッドがらくたwmicを定期的に吐き出す代わりにstdoutを指定しない限り、findコマンドが機能しない可能性があることに注意してください。wmic /output:stdout qfe get hotfixid | find "KB99999"
songei2f

管理者として実行する必要がありますか?他の場所のように思える私は必要があることを教えてくれます。確認したいです。
ホセ

何らかの理由で、「find」を使用すると、誤った形式エラーが発生します。一重引用符と二重引用符を試しました。
スコット

@Scott(および同じ問題に遭遇した他の人):PS findコマンドレットにはパラメーターが必要です。cmdから実行するfind.exeは実行しません。
マスタチェアータ

17

PowerShell 2.0にはget-hotfixコマンドレットが含まれています。これは、特定の修正プログラムがローカルコンピューターまたはリモートコンピューターにインストールされているかどうかを確認する簡単な方法です。基本的な構文の例は次のとおりです。

get-hotfix -id KB974332

これはv4にはありません
-StingyJack

v5.1には間違いなく存在します。そして、ここでヘルプページがあります:docs.microsoft.com/en-gb/powershell/module/...
Antの

6

CMDウィンドウで「systeminfo」を実行すると、インストールされているパッチを含むシステムに関する統計の負荷が引き戻されます。


3

その他の可能性:KB番号のGrep%windir%\ Windowsupdate.log。または、reg.exeを使用して、対応するインストールキーをエクスポートします。


1
私のWindowsには付属していませんgrep。を使用する必要がありますfind
jscott

@jscott:Windowsではgrepが非標準であることを知っています:-) Findまたはfindstrの方が適しています。しかし、ここではgrepという単語を「to grep」のように使用して、文字通りユーティリティ「grep」を意味する代わりにプロセスを示しています。grepを動詞として使用することは、私が通常操作しているUnixサークルでは非常に一般的であるため、Windowsの人には奇妙に見えるかもしれないと思わずに、この用語を多かれ少なかれ使用しました。
トニー

これは古い答えですが、%windir%\ Windowsupdate.logには過去1か月間の更新のみが表示されるようです。おそらく、それはその時間後にロールオフするように構成されているためですが、そのログでそれが見つからない場合、システムに存在しないことを示さない場合があることを指摘しているだけです。
グラウコン

0
wmic qfe list /format:htable>C:\PatchList%Computername%.html

上記のコマンドは、出力をhtml形式で提供します。


0

PowerShellプロンプトでwmicを使用することについて誰かが尋ねたように、Select-String(またはsls)を使用するだけです。

wmic qfe get hotfixid | sls "KB99999"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.