【VBA】【WMI】イベント ログからの1 日分のイベントの取得

イベントログからの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 objEvent

End Sub

コメント

タイトルとURLをコピーしました