やりたいのは、先月の1日0:00から末日23:59までのWindowsイベントログ(起動と終了のみ)を取得し、evtxファイルにしたいです。下記のコードでほぼうまくいきますが、一点だけ意図しない動きをします。
たとえば8/1から8/31のログを取ろうとすると、8/1から9/1ログが取れてしまいます。どのようにすれば、日本時間で8/31 23:59までのログになるでしょうか。
毎月の作業なので、文字のベタ打ちではなく「sysdateの先月」というようにしたいです。
Set objShell = WScript.CreateObject("WScript.Shell")
Set objWshNetwork = CreateObject("WScript.Network")
var1stDayOfPrevMonth = DateSerial(Year(Date()), Month(Date()) - 1, 1)
varEndOfPrevMonth = DateSerial(Year(Date()), Month(Date()), 0)
strStringStart= Replace(var1stDayOfPrevMonth, "/", "-")
strStringEnd= Replace(varEndOfPrevMonth, "/", "-")
desktopFolder = objShell.SpecialFolders("Desktop")
yyyy = Left(strStringStart, 4)
mm = Mid(strStringStart, 6 ,2)
computerName = objWshNetwork.ComputerName
UserName=objWshNetwork.UserName
Set user = GetObject("WinNT://" & computerName & "/" & userName)
TantouName = user.Get("FullName")
strString1 = """*[System[(EventID=6005 or EventID=6006) and TimeCreated[@SystemTime>='"&strStringStart&"T00:00:00+09:00' and @SystemTime<='"&strStringEnd&"T23:59:00+09:00']]]"""
objShell.Run ("wevtutil epl System "&desktopFolder&"/"&TantouName&"_"&yyyy&"年"&mm&"月分.evtx /ow /q:"&strString1)
Set objShell = Nothing
WaitSec = 1
WScript.Sleep WaitSec*1000
Msgbox var1stDayOfPrevMonth&" 0:00:00 から "&varEndOfPrevMonth&" 23:59:59 までのログを出力しました"
あなたの回答
tips
プレビュー