Groovy で Windows Update の履歴を出力する - Scriptom を使った COM 実行
Groovy スクリプト上で Windows の COM 実行を可能とする Scriptom モジュールを試すために、Windows Update の履歴を出力する処理を Groovy スクリプトで書いてみた。
実行環境は以下の通り。
- Java SE 6.0 Update 11
- Groovy 1.5.7
- Scriptom 1.5.4
WSH スクリプトで Windows Update の履歴出力
Groovy で書く前に、一応 WSH スクリプトで動作確認してみた。(Windows Update の履歴取得は Windows Update Agent API を使用)
wuHistories.js
//IUpdateSession 実装オブジェクト生成 var session = WScript.CreateObject("Microsoft.Update.Session"); //IUpdateSearcher 実装オブジェクト取得 var searcher = session.CreateUpdateSearcher(); //履歴総数を取得 var historyCount = searcher.GetTotalHistoryCount(); //全履歴を取得(IUpdateHistoryEntryCollection) var histories = searcher.QueryHistory(0, historyCount); for (var i = 0; i < histories.Count; i++) { //IUpdateHistoryEntry var entry = histories.Item(i); WScript.echo(entry.Title + " = " + entry.ResultCode); }
実行例
>cscript.exe wuHistories.js ・・・ Windows Update ソフトウェア 7.0.6000.381 = 2
Groovy スクリプトで Windows Update の履歴出力
まず、Scriptom を以下の手順でインストールしておく。
Scriptom のインストール手順
- Scriptom の zip ファイル(scriptom-1.5.4.zip)をダウンロードし、適当なディレクトリに解凍
- 解凍先ディレクトの scriptom-1.5.4b12.jar が Groovy 実行時のクラスパスに含まれるように設定
- 解凍先ディレクトリのパスを環境変数 PATH に追加(scriptom-1.5.4b12-xXX.dll を java.library.path に含めるための措置)
そして、Groovy スクリプトを以下の点に注意して作成する。(基本的な処理は WSH スクリプト版とほぼ同じ)
- COM の処理を Scriptom.inApartment{} 内に記述
- new ActiveXObject で COM オブジェクトを生成
wuHistories.groovy
import org.codehaus.groovy.scriptom.* Scriptom.inApartment { def session = new ActiveXObject("Microsoft.Update.Session") def searcher = session.CreateUpdateSearcher() def historyCount = searcher.GetTotalHistoryCount() def histories = searcher.QueryHistory(0, historyCount) histories.each { println "${it.Title} = ${it.ResultCode}" } }
実行例
>groovy wuHistories.groovy ・・・ Windows Update ソフトウェア 7.0.6000.381 = 2