itomix 10 Geschrieben 27. Oktober 2008 Melden Teilen Geschrieben 27. Oktober 2008 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") Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 27. Oktober 2008 Melden Teilen Geschrieben 27. Oktober 2008 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 Zitieren Link zu diesem Kommentar
itomix 10 Geschrieben 27. Oktober 2008 Autor Melden Teilen Geschrieben 27. Oktober 2008 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.