更新履歴からパッチを検索する

Windowsのセキュリティパッチをあてた際に、ちゃんとあたっているか確認するスクリプトがあったらいいと思います。バッチ番号を指定すると適用済みか未適用か判断させるようなプログラムです。コントロールパネルのインストールされた更新プログラムを直接取得出来ればよいのですが、簡単にできるものが無さそうです。そこで、更新履歴のタイトルからパッチ番号を検索するようなシェルを作成しました。インストールされているプログラムでも更新履歴上に存在しない場合がある気がします。最終的には更新プログラムで確認したほうが良さそうです。

set-PSDebug -strict
# ---------------------------------------
# Windows更新履歴からセキュリティパッチを検索する
# 引数:パッチ番号
# ---------------------------------------

Function SearchPatch{
    # 引数の取得
    param([string]$patch_id)
    
    # Searcherオブジェクト生成
    $Searcher = new-object -com Microsoft.Update.Searcher
    
    # Softwareの更新情報取得
    $result = $Searcher.Search("Type='Software'")
    $updates = $result.updates
    
    # パッチ番号を検索
    $res = "-"
    for ($i = 0; $i -le $updates.count -1 ; $i++){
        $title = $updates.item($i).title
        if ($title -match $patch_id){
            $res = "OK"
            break
        }
    }
    
    # 画面に表示
    $line1 = $patch_id + "  :" + $res
    write-Host $line1
}