前提・実現したいこと
VBSでWindowsの起動と終了のイベントログをEVTX形式で出力したいです。
・SYSDATEの前月の1日0:00:00~前月末23:59:59の起動と終了のログ
・VBSファイルと同じフォルダにEVTX形式で出力
発生している問題・エラーメッセージ
実現したいことに近いソースコードを探してみましたが下記がわかりません。
・イベントログをダイアログに書き出すのではなくEVTX形式で出力する方法
・SYSDATEの前月の1日0:00:00~前月末23:59:59の起動と終了のログを取得してくるようにする方法
該当のソースコード
' 取得ログ 日付設定
Const CONVERT_TO_LOCAL_TIME = True
Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")
DateToCheck = Date
dtmStartDate.SetVarDate DateToCheck - 7, CONVERT_TO_LOCAL_TIME
dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME
' イベントログの取得 起動ログとシャットダウンのログを取得
' 起動 6005
' 正常シャットダウン 6006
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where TimeWritten >= '" _
& dtmStartDate & "' and TimeWritten < '" _
& dtmEndDate & "' AND (EventCode = 6005 OR EventCode = 6006)")
' ログ生成
Dim msg
For each objEvent in colEvents
' イベントログ日時 整形 Set tempDate = CreateObject("WbemScripting.SWbemDateTime") tempDate.Value = objEvent.TimeWritten
If objEvent.EventCode = 6005 then
msg = msg & "起動 " & tempDate.GetVarDate(True) & vbCrLf
ElseIf objEvent.EventCode = 6006 then
msg = msg & "終了 " & tempDate.GetVarDate(True) & vbCrLf
End If
Next
' ログ出力
Wscript.Echo msg
VBS

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/16 14:45