User Tools

Site Tools


vbs:eventlog

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
vbs/eventlog.txt · Last modified: 2013/02/27 12:25 by Giovanni