2008/11/30

RubyでWindowsのイベントログを検索して出力

先日の札幌Ruby会議01のartonさんのセッションを見てから、「Windowsのシステム管理的なことをRubyでしてみたい」と考えるようになり、この本を買いました。

Rubyist Magazine出張版 Ruby on Windows
cuzic
毎日コミュニケーションズ
売り上げランキング: 164579


Rubyist Magazineの連載自体はWebでも見れるのですが、大幅に加筆されていて良い本だと思いました。
で、この本の中にRubyでWMIを使うという章があるのですが、「RubyからWMI呼べるってことは、結局WMIでできることは何でもできるんだよな」と思ったので、Rubyからイベントログを検索して出力するスクリプトを書いてみました。


#!/cygdrive/c/InstantRails/ruby/bin/ruby -Ks

require 'win32ole'

locator = WIN32OLE.new("WbemScripting.SWbemLocator")
services = locator.ConnectServer(".","root/cimv2")
eventset = services.ExecQuery("Select * From Win32_NTLogEvent Where Logfile='Sys
tem' " + "And TimeGenerated > '2008/11/01'")

eventset.each do |event|
puts "***********************************************"
print "EventCode: "
puts event.EventCode
print "EventType: "
puts event.EventType
print "EventDate: "
puts event.TimeGenerated
puts "Message: "
puts event.Message
end

exit


おおー素晴らしい。MSDNのWMIライブラリは役に立ちますねー。