VBSでPCの起動・シャットダウンログを取得する



自分の勤怠を付け忘れた時に自作したものです。
VBSでPCの起動・シャットダウンのイベントログを読み込んで出力してくれるスクリプトを書きました。

VBSは以下のソースをメモ帳に貼り付けて、「***.vbs」と適当な名前をつければOK
後はダブルクリックにて起動して7日以内の起動・シャットダウンログを取得してダイアログに表示してくれます。

VBSのソース
' 取得ログ 日付設定
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はWindows環境上だと何もインストールしなくても動くので時々簡単なプログラムを作って遊んでいます。
機会があれば色々覚えると後々役立つこともあります。


Comments
  1. ジョン

    はじめまして。このメッセージボックスの表示を昇順や降順に変更させることはできますか?よろしくお願いいたします。

  2. 匿名

    17行目に継続行指定がないのでエラーになりました。

    • 管理人

      すいません、修正致しますした。
      継続改行「_」を忘れていました。
      ご指摘ありがとうございます。

コメントを残す