Jump to content

EventWatcher - mal ganz easy


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

da ich schon mehrmals gefragt wurde ob es ein Skript gibt

was eine bestimmtes Ergeignis finden und diese per Email

versendet, habe ich hierzu mal ein kleines Skript geschrieben.

Da es sich ausschliesslich um Funktionen handelt könnt Ihr den

Quellcode sehr einfach in eure Skripte einbinden

 

Gruß

Tom Del Greco

 

 

 

'________________________________________________'

' '

' WatchEvents'

' Create for Windows XP/2000/2003'

' from T. Del Greco 27.10.2008'

'________________________________________________'

 

 

 

On Error Resume Next

 

 

FUNCTION SearchEventLog(strEventCode, strLogFile, strSourceName)

 

CONST CONVERT_TO_LOCAL_TIME = True

 

Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")

Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")

strDateNow = DateSerial(Year(Now()),Month(Now()),Day(Now()))

 

DateToCheck = CDate(strDateNow)

dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME

dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME

 

strComputer = "."

 

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

 

Set colEvents = objWMIService.ExecQuery ( "Select * from Win32_NTLogEvent Where " _

& "Logfile = '" & strLogFile & "' and EventCode = '"& strEventcode & "'" _

& "and SourceName = '" & strSourceName & "'" _

& "and TimeWritten >= '" & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")

 

 

 

IF colEvents.Count >= 1 THEN

FOR EACH objEvent IN colEvents

strEventCode = objEvent.EventCode

strEventMessage = objEvent.Message

NEXT

CALL SendMail(strEventCode,strEventMessage)

ELSE

WScript.Echo "Alles OK"

END IF

 

END FUNCTION

 

 

FUNCTION HostN()

 

strComputer ="."

 

CONST wbemFlagReturnImmediately = &h10

CONST wbemFlagForwardOnly = &h20

DIM a

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colPC = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _

wbemFlagReturnImmediately + wbemFlagForwardOnly)

FOR EACH objItem IN colPC

a = objItem.Name

NEXT

HostN=a

END FUNCTION

 

 

FUNCTION SendMail(strEventCode,strEventMessage)

 

strSMTP = "smtp.contoso.com"

strDate = formatDateTime(Now(), vbLongDate)

strTime = formatDateTime(Now(), vbLongTime)

 

Set objEmail = CreateObject("CDO.Message")

objEmail.From = "BigBrother@" & HostN() & ".osite.de"

objEmail.To = "administrator@contoso.com"

objEmail.CC = "bigbrother@contoso.com"

objEmail.Subject = "[EVENTLOG : ERROR] - " & HostN

objEmail.TextBody = objEmail.TextBody & vbCRLF & String(46, "_") & vbCRLF

objEmail.TextBody = objEmail.TextBody & vbCRLF

objEmail.TextBody = objEmail.TextBody & " BigBrother / contoso.local"

objEmail.TextBody = objEmail.TextBody & vbCRLF & String(46, "_") & vbCRLF

objEmail.TextBody = objEmail.TextBody & vbCRLF & "Host : " & HostN

objEmail.TextBody = objEmail.TextBody & vbCRLF & "Date : "& strDate & " " & strTime & vbCRLF

objEmail.TextBody = objEmail.TextBody & vbCRLF & "Event Code : " & strEventCode

objEmail.TextBody = objEmail.TextBody & vbCRLF & "Event Message : " & strEventMessage

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objEmail.Configuration.Fields.Update

objEmail.Send

END FUNCTION

 

CALL SearchEventLog("100","System","TEST")

Link zu diesem Kommentar

Hi NilsK,

 

schön das jemand Antwortet ;o)

 

Aber ich habe dieses Skript gepostet damit man nicht umbending auf eine EXE zurückgreifen muss da diese a) recht statisch ist und man nie weiß was diese EXEC sonst noch so macht ;o)

 

Gruß

Tom

 

 

Moin,

 

sehr schön!

 

Hier eine Alternative für XP und 2003 (in Vista/2008 scheint es nicht drinzusein; dort kann man das aber per GUI machen):

faq-o-matic.net Auf Windows-Ereignisse reagieren

 

Zum Mailversand kann man blat.exe einbinden.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...