Windowsイベントログの保存

 個人情報保護法やら何やらの件で、今まで余裕ぶっこいてあまり真面目に考えていなかったWindowsマシンのログもいちおう取っておこうかなという気になった(笑)

 仕事関係の中核マシンは監視の絡みもあるので、Snareみたいな仕掛けを使って比較的しっかり作っているのだが、さほど重要度の高くないWindowsサーバはほとんどローテートするに任せていた。

ようするに何もしていなかったわけである(爆)

 これだとイザという時困るかも…ということで、せめてバックアップくらいは取って置こうかと思ったわけである。

 どんな時がイザという時なのか…と問われると、よくわからんのだが(笑)。

 イベントログファイルは、リソースキットツールのDumpel.exeとかElogDmp.exeなどでもエクスポートできるが、パージといっしょに行いたかったので、WMIを使ったスクリプトを用意した。
 実際には纏めて圧縮アーカイブしたり二次記憶媒体に書き込んだりで、もっと複雑だが、キモ的にはこんな感じ。





' =======================================================
' Event Log export and clear TEST
' sample By SIGNAL9
' **** 実行にはAdministator検眼が必要
' =======================================================

' 注意:ここで指定したパスは、接続がリモートコンピュータの場合、
' そのコンピュータのパスになる
BackUpPath = "C:\Temp\"

' File system Object
Set fs = CreateObject("Scripting.FileSystemObject")

' Target Computer.
ComputerName = "." 'ローカル
' ComputerName = "RemotoComputerName"

Set EV = GetObject("winmgmts:{impersonationLevel=impersonate, _
(Backup, Security)}!\\" & ComputerName & _
"\root\cimv2:Win32_NTEVENTLOGFILE")

Set instEV = EV.instances_
For Each n in instEV
BackupFileName = ComputerName & _
n.LogFileName & _
DatePart("YYYY",date) & _
DatePart("M",date) & _
DatePart("D",date) & _
DatePart("h",time) & _
DatePart("n",time) & _
DatePart("s",time) & ".EVT"

BackupFileName = Replace(BackupFileName, " ", "")
Fname = BackUpPath & BackupFileName
rt = n.BackupEventLog(Fname)
If rt = 0 then
' n.ClearEventlog()
Else
Wscript.Echo "Error."
End If
Next

Set fs = Nothing
Set instEV = Nothing
Set EV = Nothing

[PR]
by SIGNAL-9 | 2005-03-28 15:00 | TIPSとかKludgeとか | Comments(0)
<< VBってなくなっちゃうの? 古いSolarisで大量ユーザ登録 >>