質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

0回答

1160閲覧

vbsでWindowsイベントログを取ると余計な日付がとれてしまう

Nachu

総合スコア13

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2020/09/08 00:43

やりたいのは、先月の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 までのログを出力しました"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DreamTheater

2020/09/08 00:54

9時間ずれてませんか?
Nachu

2020/09/08 03:27

日時は ISO 8601 フォーマットなので 日本時間にあわせるために9時間をプラスすると聞きそのようにしたのですが、9時間をプラスしてもマイナスしても何もしなくても結果は変わりません…
kuma_kuma_

2020/09/19 23:04

こちらで試しましたが正常な範囲でした。 気になった箇所 Call objShell.Run("wevtutil epl System """ & desktopFolder & "/" & TantouName & "_" & yyyy & "年" & mm & "月分.evtx"" /ow /q:" & strString1) Set objWshNetwork = Nothing Set objShell = Nothing evtxファイルパス指定を「"」で囲んでいます。 囲まなくパスに空白があると後のコマンドが正常に判断されません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問