第17回 OSのバージョンやパッチ適用状況のチェックに使えるバッチファイル“3選”|中堅・中小企業のIT活用|トピックス|Computerworld

CW_Welcomeバナー

header_cwr_head_mid_fl_logo

CW_ADJUST_ウルトラバナー

CW_ウルトラバナー_Topics02

CW_ウルトラバナー_Topics04

CW_ウルトラバナー_Topics05

CW_ウルトラバナー_Topics06

CW_ウルトラバナー_Topics07

CW_ウルトラバナー_Topics08

中堅・中小企業のIT活用

RSS
【Windowsお悩み相談室】

第17回 OSのバージョンやパッチ適用状況のチェックに使えるバッチファイル“3選”

サーバ管理者必見!! “疑問”“奇問”“難問”に答えます
(2011年08月10日)

大手企業であればキチンとしたシステム管理部門があるが、中小規模企業だとそうはいかない。ちょっとコンピュータに詳しいがゆえに「じゃ、サーバ管理やって」と命令され、途方に暮れている人もいるだろう。本連載ではWindows OSに特化し、ありがちな質問からMicrosoftのWebサイトにも掲載されていないような奇問までを取り上げ、その解決方法を指南する。サーバ管理で頭を痛めている人はぜひ参考にしてほしい。

【質問49】

更新プログラムがインストール済みかどうかすばやく調べる方法

[対象]Windows XP、Windows Vista、Windows 7、Windows Server 2003、Windows Server 2008、Windows Server 2008 R2

■現象

 コンピューターに特定の更新プログラムがインストールされているかどうかを簡単に調べる方法はないでしょうか。「コントロールパネル」の「インストールされた更新プログラム」や、Windows Updateの「更新履歴の表示」で確認することもできるのですが、KB(Knowledge Base)番号で並べ替えることができないため、確認するのがたいへんです。


▲Windows Updateでインストールされた更新プログラムの一覧は、KB番号による検索ができない

■解決

 OSの構成情報を表示する「Systeminfo」コマンド(Systeminfo.exe)を利用する方法があります。Systeminfoコマンドの実行結果の「ホットフィックス:」には、インストール済みの更新プログラムの一覧が表示されます。ここで「FIND」コマンドを使用して、テキスト検索でフィルターすることで、特定のKB番号の更新プログラムがインストールされているかどうかを確認することができます。

Systeminfo | FIND "KB番号"


▲Systeminfoコマンドの「ホットフィックス:」の一覧から、特定のKB番号に一致する更新プログラムを検索する

 ただし、Systeminfoコマンドの「ホットフィックス:」一覧は、Windows Updateの更新履歴とは完全に一致しないようで、一部の更新プログラムの情報が抜けることがあります。

 Windows Updateでインストールされた更新プログラムの完全なリストを対象にして検索するには、「Windows Update Agent API」を利用します。

■Using the Windows Update Agent API(MSDN Library)
[URL]http://msdn.microsoft.com/en-us/library/aa387287(v=VS.85).aspx

 次のWindows Script Host(WSH)スクリプトは、Windows Update Agent APIを利用して、Windows Updateの更新履歴の一覧(インストール状態が「成功」のみ)を出力するVBScriptで記述したスクリプトの例です。

【wuhistory.vbs】
--------------------------------------------------
Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher
intCount = objSearcher.GetTotalHistoryCount

Set colHistory = objSearcher.QueryHistory(0, intCount)

For Each objHistory In colHistory
  If objHistory.HResult = 0 then 'インストール成功
    WScript.Echo DateAdd("h",9,objHistory.Date) & ", " & objHistory.Title
  End If
Next
--------------------------------------------------

▲Windows Update Agent APIを利用したWSHスクリプトで、Windows Updateの更新履歴を検索する

記事詳細テキストバナー

ページの先頭へ戻る