[Windows Vista] 特定の更新プログラムが適用済みかどうかを調べるには
Windows の更新プログラムには、KBxxxxxx といった番号がついていますが、特定の更新プログラムが適用済みかどうかを調べるにはどうすればよいでしょうか。
コントロールパネルの [プログラムと機能] から [インストールされた更新プログラム] を見ればよいのですが、この中から目的の更新プログラムを見つけるのは簡単ではありません。更新プログラムが適用されていないことを確認するのはもっと大変です。
そのような時、適用済みの更新プログラムを、より簡単に探し出すためには、検索機能を使うと便利です。
KB958623 を探すには、検索フィールドに KB958.. または *958.. と入力すると、一文字入力するたびにインクリメンタルに検索されます。958.. と入力するとマッチしませんのでご注意ください。
同様の検索を Windows PowerShell で実行するには、以下のようにします。
PS> $wu = new-object -com Microsoft.Update.Searcher
PS> $updates = $wu.Search("Type='Software'")
PS> $updates | Where-Object {$_.title -like "*958*"} |
>> Format-Table title, MsrcSeverity
title MsrcSeverity
----- ------------
Windows Vista 用セキュリティ更新プロ... Important
Microsoft Office Excel 2007 セキュリ... Important
Microsoft Office Outlook 2007 迷惑メ...
2007 Microsoft Office system セキュ... Important
Windows Vista 用セキュリティ更新プロ... Critical
Windows Vista 用セキュリティ更新プロ... Important
Microsoft Update による更新プログラムを検索するには、Microsoft.Update.Searcher の COM オブジェクトを利用します。また、Microsoft Update のスケジュールなどの設定の管理は Microsoft.Update.AutoUpdate、履歴の表示は Microsoft.Update.Session など多彩な情報がスクリプトで取得できます。詳細は MSDN ライブラリや Scripting Guy の記事を参照してください。
Windows Update Agent API (Windows) (英語)
http://msdn.microsoft.com/en-us/library/aa387099.aspx
Hey, Scripting Guy!
コンピュータにインストールされているサービス パックを
特定する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/
resources/qanda/sept04/hey0929.mspx
Microsoft Update を使わずに、手動でインストールした更新プログラムは、この方法では表示されないことがあります。その場合は WMI の Win32_QuickFixEngineering クラスを使って検索してみてください。
PS> Get-WmiObject Win32_QuickFixEngineering |
>> Where-Object { $_.HotFixID -like "*928*"} |
>> Format-Table HotFixID
HotFixID
--------
928439
KB928439 は Windows PowerShell です。Win32_QuickFixEngineering クラスの詳細については以下をご参照ください。
Win32_QuickFixEngineering Class (英語)
http://msdn.microsoft.com/en-us/library/aa394391.aspx