特定の更新ファイル(KB)がインストールされているか調べるコマンドとバッチファイル
目次
Windowsパソコンにセキュリティバッチや更新ファイル(KB******)が適用されているかを調べる方法として、[コントロール パネル]-[Windows Update]-[更新履歴の表示]を見ればいいのですが、インストールされたパッチの一覧が出るまでに時間がかかったり、検索に時間がかかったりします。
そこで、サクッとコマンドで調べる方法があたのでメモ。
2種類のコマンド
2種類のコマンドを見つけました。SYSTEMINFOを使う方法とWMICを使う方法です。
仮にWindows7のWindows Updateで直近にインストールされた「2017-08 x86 ベース システム用 Windows 7 向けセキュリティ マンスリー品質ロールアップ (KB4034664)」がインストールされているかを調べる例で表してみます。
SYSTEMINFOの場合
systeminfo | find "KB4034664"
上記のコマンドを打ってEnterを押すと検索が始まり、インストールされていれば、次の行に[239]: KB4034664と表示され、無ければ何も表示されません。以下のように、KB番号を正しく入れなくても部分的に一致するものを結果として表示してくれます。
ちなみに、systeminfoだけEnterを押すと、ハードウェアやシステム情報、ネットワークや適用されているすべての更新ファイル(KB)の一覧が表示されます。その中の情報をfindで抽出しています。
WMICの場合
wmic qfe | find "KB4034664"
上記のコマンドを打ってEnterを押すと検索が始まり、インストールされていれば、次の行に詳細が表示され、無ければ何も表示されません。こちらも、KB番号を正しく入れなくても部分的に一致するものを結果として表示してくれます。
すべての一覧を表示する場合、
wmic qfe list
を実行すると、適用されているすべての更新ファイル(KB)の一覧が表示されます。その中の情報をfindで抽出しています。
ちなみに、すべての一覧をHTML形式で出力する場合
wmic qfe list /format:htable > kblist.htm
これを実行すると結果の一覧がHTMLでC:\Users\ユーザー名のフォルダにkblist.htmというHTMLファイルが出力されます。
バッチファイルの例
更新ファイルをインストールされてるかどうかで何かを実行するといった場合に使えためにサンプルをバッチファイルのメモ。
SYSTEMINFOの場合
@echo off systeminfo | find "KB4034664" if %errorlevel% equ 0 ( echo 適用済です ) else ( echo 未適用です ) pause
WMICの場合
@echo off wmic qfe | find "KB4034664" if %errorlevel% equ 0 ( echo 適用済です ) else ( echo 未適用です ) pause