イベントログからの1日分のイベントの取得 を参考にvbsのコードからVBAのソースへコンバートしたもの。
いろいろ調べてみると、確かにwmiでいろいろなことができる。
今回自分が得意な言語として手軽なVBAを使っているけど、Powershellだったり、vbsだったり、かなりいろいろな場面でwmiが使える。
Sub イベントログからの1日分のイベントの取得()
‘https://gallery.technet.microsoft.com/scriptcenter/acbdfe0b-859f-419c-ab4f-38c1a10f07f2
Const CONVERT_TO_LOCAL_TIME As Boolean = True
Dim dtmStartDate As New WbemScripting.SWbemDateTime
Dim dtmEndDate As New WbemScripting.SWbemDateTime
‘ここの日付を変える
Dim DateToCheck As Date: DateToCheck = CDate("11/6/2014")
dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME
dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME
strComputer = "."‘microsoft wmi scripting 1.2 参照設定させる。
Dim colEvents As SWbemObjectSet
Dim objEvent As SWbemObjectEx
Dim oLocator As SWbemLocator
Dim oService As SWbemServices
Set oLocator = New WbemScripting.SWbemLocator
Set oService = oLocator.ConnectServer
Set colEvents = oService.ExecQuery _
("Select * from Win32_NTLogEvent Where TimeWritten >= ‘" _
& dtmStartDate & "’ and TimeWritten < ‘" & dtmEndDate & "’")For Each objEvent In colEvents
Debug.Print "Category: " & objEvent.Category
Debug.Print "Computer Name: " & objEvent.ComputerName
Debug.Print "Event Code: " & objEvent.EventCode
Debug.Print "Message: " & objEvent.Message
Debug.Print "Record Number: " & objEvent.RecordNumber
Debug.Print "Source Name: " & objEvent.SourceName
Debug.Print "Time Written: " & objEvent.TimeWritten
Debug.Print "Event Type: " & objEvent.Type
Debug.Print "User: " & objEvent.User
Debug.Print objEvent.LogFile
Next objEventEnd Sub
コメント