====== Event Viewer Catch ======
La funzione esegue una ricerca nell'Event Viewer di sistema e restituisce l'ultimo evento con un ID dichiarato inizialmente (vedi ShowServicesEvent(6005)). 6005 è l'ID corrispondente all'ultimo avvio del registro di sistema (tipicamente eseguito in post-riavvio della macchina).
' FILTRO SU ID SISTEMA e RICERCA ULTIMO EVENTO REGISTRATO
ShowServicesEvent(6005)
Public Function ShowServicesEvent(evcode)
strComputer = "."
evecode = evcode
count = 0
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and EventCode = '" & evecode & "'")
For Each strEvent in colServiceEvents
dtmConvertedDate.Value = strEvent.TimeWritten
'Debug: informazioni mostrate in msgbox (togliere i commenti per la verifica)
'Wscript.Echo dtmConvertedDate.GetVarDate
'Wscript.Echo strEvent.Message
count = count + 1
if count <> 0 Then
Exit Function
End If
Next
End Function
===== Recupero di tutti gli oggetti con lo stesso ID =====
E' una modifica alla funzione, permette di raccogliere tutti gli eventi con lo stesso ID (stavolta passato direttamente dentro "colServiceEvents" e non via variabile. Occhio agli "echo" che mostrano a video tramite msgbox tutte le informazioni: più eventi ci sono con quell'ID, più box verranno mostrati a video.
Come già detto nei commenti in caso di lancio per errore è possibile terminare l'esecuzione dello script tramite prompt dei comandi: **taskkill /IM wscript.exe /F**
' Questa funzione mostra tutti gli eventi con lo stesso ID, occhio a sbloccarla perché i messaggi vengono mostrati tramite MSGBOX e potrebbero essere moltissimi. Sostituire l'ID 6005 contenuto in riga 29 con quello desiderato.
' In caso di errore da prompt dei comandi lanciare un "taskkill /IM wscript.exe /F" (senza virgolette) per bloccare l'esecuzione dello script
Public Function ShowServicesEvent()
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
count = 0
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and EventCode = '6005'")
For Each strEvent in colServiceEvents
dtmConvertedDate.Value = strEvent.TimeWritten
Wscript.Echo dtmConvertedDate.GetVarDate
Wscript.Echo strEvent.Message
Next
End Function