eventquery.vbs の時刻指定をしたときのソート
質問の趣旨は、「eventquery.vbs をバッチファイルから呼び出したときに、日付時刻のフィルタ条件を指定すると結果がソートされていないので、日付時刻順にソートさせるにはどうしたらよい?」だと思ったのですが、あってますか?
って、誰に尋ねてるのかよくわからないので、とりあえずそういう前提であれば
みたいに、出力結果の日付時刻部分を比較対照に指定して sort コマンドで並べなおせばよいですね。
[]C:\>[] eventquery /FI "datetime []eq[] 06/01/2007,01:00:00AM-06/07/2007,12:59:59PM" | []sort[] /+23
…とか思ったら、日付時刻のフォーマットは FormatDateTime 関数を通して出力されているので、Hourの部分がゼロサプレスされてうまくソートされなかったり、ユーザ環境によって形式がマチマチだったりします…。うーん…。
eventquery.vbs の時刻指定
先日の Admintech.jp 勉強会のときに、eventquery.vbs の出力結果をうまくソートさせるには?という話が出ていたので、少し調べていて見事にはまりました(本題のソート云々はまだこれからです上のエントリ参照)。
何でやねん! ということでソースを追いかけてみると、このエラーを表示させているのは、 cmdlib.wsc の中の validateDateTime という関数のようです。
[]C:\[]>[]eventquery[] /FI "datetime []eq[] 06/01/2007,00:00:00AM"
...
[]エラー[]: []フィルタ[] '06/01/2007,00:00:00AM' に指定した時刻 '00:00:00AM' は無効です。
840行目あたりで
If ((CInt(intHour) < 1) OR (CInt(intHour) > 12) OR _
って書いてます。あれ?Hour って普通 0..11 ですよね…。
というわけで、eventquery.vbs を使う場合、フィルタで時刻を指定する場合は、0〜11時ではなく、+1 させて1〜12時を指定しないとダメなようです。気持ち悪っ。