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).
- eventlog.vbs
' 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
- eventlog.vbs
' 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