イベントログの抽出方法(備忘録)
WindowsServer2003までのOSでイベントログがアーカイブできないのは知ってのこと。WindowsVISTA、WindowsServer2008、Windows7ではイベントログのプロパティで設定することによりイベントログをアーカイブできることは先日報告しました。
で、今回たまたま仕事でWindowsServer2003のイベントログを退避する必要がでたので、その際に作成したソースをサンプル掲載します。
@echo on
rem 実行時のディレクトリ習得
set BaseDIR=%cd%
rem 自ホスト(パソコン)名
set Hostnm=%computername%
rem 日付の算出
rem 年(4ケタで)
set yyyy=%date:~0,4%
rem 月(2ケタで)
set mm=%date:~5,2%
rem 日(2ケタで)
set dd=%date:~8,2%
rem 前日の計算
set /a dd=%dd%-1
set dd=00%dd%
rem 閏年の確認
set /a ymond=%yyyy% %% 4
rem 前日の年月日の算出
if %dd%==00 (
if %mm%==01 ( set mm=12 && set dd=31 && set /a yyyy=%yyyy%-1 )
if %mm%==02 ( set mm=01 && set dd==31)
if %mm%==03 ( set mm=02 && set dd==28 && if %ymond==0 ( set dd=29))
if %mm%==04 ( set mm=03 && set dd==31)
if %mm%==05 ( set mm=04 && set dd==30)
if %mm%==06 ( set mm=05 && set dd==31)
if %mm%==07 ( set mm=06 && set dd==30)
if %mm%==08 ( set mm=07 && set dd==31)
if %mm%==09 ( set mm=08 && set dd==31)
if %mm%==10 ( set mm=09 && set dd==30)
if %mm%==11 ( set mm=10 && set dd==31)
if %mm%==12 ( set mm=11 && set dd==30)
)
rem イベントログの習得日付
set envdate=%mm%/%dd%/%yyyy%
rem 取得した情報はファイルに出力するので
cscript C:\Windows\System32\eventquery.vbs /V /FI #DATETIME eq %envdate%,12:00:00AM-%envdate%,11:59:59PM"
このソースはあくまで、2003サーバ、XPなどで使用できますが、VISTAでは無理です。なにせ「eventquery.vbs」がVISTAには無いので動きません!おしからず!