インストールされたHotFixのプログラムを検索する
Windowsのパッチの検索で、win32_QuickFixEngineeringというWMIのクラスをみつけました。このクラスはインストール済みHotFixの情報をもっています。以下サイトにもあるように実際にインストールされている修正プログラムを見逃す場合があるそうです。
Hey, Scripting Guy!
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept05/hey0930.mspx
実際に、インストールされたHotFixのプログラムを検索するプログラムを作成してみました。今回は引数をインストール日付、パッチ番号どちらを指定してもよいようにしました。
set-PSDebug -strict # --------------------------------- # インストールされたHotFixのプログラムを検索する # 第一引数:yyyy/mm/dd または パッチ番号 # --------------------------------- Function GetInstalledHotFix{ # 引数の取得 param([string]$str) # win32_QuickFixEngineeringオブジェクト取得 $qfe = get-wmiobject -query "select * from win32_QuickFixEngineering" # 引数が日付の場合 $r = $str -match "^\d{4}/\d{2}/\d{2}$" if ($r){ # 日付が一致したらバッチ番号を表示 foreach ($q in $qfe){ $d = ($q.InstalledOn).tostring("yyyy/MM/dd") if ($d -eq $str){ write-Host $q.HotFixID } } # 引数が日付以外の場合(パッチ番号) }else{ # パッチ番号が存在したらOKを表示 foreach ($q in $qfe){ $id = $q.HotFixID if ($id -eq $str){ write-Host "OK" } } } }