> Mehr auf dem WMI-Teil als auf den Mail-Teil...
> Her damit!
Ich hoffe, ein Umbruch nach 132 Zeichen reicht (mehr mach OE nicht)
Gruesse
Frank
' checkeventlog.vbs
' Author: F.Matthiesen
' Createdate: 15.10.2001
' WSH-Version: 5.6 Betriebssystem: Win2000
'
' Dieses Script legt sich nach dem Start auf die Lauer und wartet auf Eintr�ge
' im Eventlog. Bei Auftreten eines Eventlog-Eintrages wird die Fehlerbeschreibung, der
Name
' des Rechners und Datum/Uhrzeit des LogEvents per Mail verschickt.
' Es benutzt die Methode ExecNotificationQuery des WMI, die
' semi-synchrone Methode der Scripting API des WBEM.
' Es sollte standardm�ssig lokal auf dem Rechner im Administratorcontext gestartet
werden.
' Weiterhin muss im Winnt\system32-Verzeichnis Blat.exe liegen.
' Aufruf: waitforevent.vbs emailadresse errortype <optional->errorstring
'
'
' M�gliche Variablenwerte des Errortype
' error = Fehler
' warning = Warnung
' information = Information
'
' Beispiel: waitforevent.vbs [EMAIL PROTECTED] error WSH
'
' Dieser Aufruf w�rde alle Fehler melden, die vom WindowsScriptingHost in das
NTEventLog eingetragen werden.
Dim errortype 'Errortyp
Dim source 'Errorquelle <optionaler String>. Es werden nur Events mit dieser Source
ausgewertet
Dim recipient 'Mailempf�nger
Dim inputvar 'Inputwert der ersten Inputbox
Dim argumentanzahl 'Anzahl der Kommandozeilenparameter
DIM wql 'SQL-Query f�r die WMI-Abfrage
'# Netzwerknamen des Rechners ermitteln #
Set WshNet = WScript.CreateObject( "WScript.Network" )
PCName = WshNet.ComputerName
Set WshNet = Nothing
'# Argumente der Kommandozeile pr�fen und auswerten #
Set args = WScript.Arguments
argumentanzahl = args.Count
If argumentanzahl <= 1 Then
GetInputbyBox "start"
Else
GetArgs
End If
If source = "" Then
wql = "SELECT * FROM __instancecreationevent WHERE targetinstance isa
'Win32_NTLogEvent' AND targetinstance.Type ='" & errortype &
"'"
Else
wql = "SELECT * FROM __instancecreationevent WHERE targetinstance isa
'Win32_NTLogEvent' AND targetinstance.Type ='" & errortype &
"' AND targetinstance.SourceName = '" & source &"'"
End if
'#========Beginn-MainScript=======#
On Error Resume Next
Set events = _
GetObject("winmgmts:{impersonationLevel=impersonate,(security)}").ExecNotificationQuery(wql)
If Err <> 0 Then ' Wenn im Script ein Fehler auftritt, dann beenden und Mail schicken
errmsg = errmsg & "Achtung!" & vbcrlf
errmsg = errmsg & "Das Script auf " & PCName &" terminierte aus folgenden
Gr�nden:" & vbcrlf
errmsg = errmsg & "Fehlernummer: " & Err.Number & vbcrlf
errmsg = errmsg & "Felerbeschreibung: " & Err.Description & vbcrlf
errmsg = errmsg & "Fehlersource: " & Err.Source
SendMailMessage errmsg
WScript.Quit 1
End If
'WScript.Echo "Warte auf Eintr�ge im EventLog..." ' Script wartet auf Events nach dem
Klick auf OK
Do
Set NTEvent = events.NextEvent
If Err <> 0 Then
errmsg = errmsg & "Achtung!" & vbcrlf
errmsg = errmsg & "Das Script auf " & PCName &" terminierte aus folgenden
Gr�nden:" & vbcrlf
errmsg = errmsg & "Fehlernummer: " & Err.Number & vbcrlf
errmsg = errmsg & "Felerbeschreibung: " & Err.Description & vbcrlf
errmsg = errmsg & "Fehlersource: " & Err.Source
SendMailMessage errmsg
WScript.Quit 1
Else
errmsg = errmsg & "Achtung!" & vbcrlf
errmsg = errmsg & "Auf dem Rechner " & PCName & " wurde soeben ein Fehler in das
Eventlog eingetragen." & vbcrlf
errmsg = errmsg & "Ausl�ser: " & NTEvent.TargetInstance.SourceName & vbcrlf
errmsg = errmsg & "Zeitpunkt: " & now & vbcrlf
errmsg = errmsg & "Text des Eintrags: " & NTEvent.TargetInstance.Message
SendMailMessage errmsg
End If
Loop
'#========Ende-MainScript========#
Sub GetArgs()
If args.Count = 2 Then
recipient = args(0)
errortype = args(1)
Elseif args.Count =3 Then
recipient = args(0)
errortype = args(1)
source = args(2)
End if
End Sub
Sub SendMailMessage(msg)
Dim fso, MyFile, tempname, WshShell
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
tempname = "c:\" & fso.GetTempName
tempname = Replace(tempname, ".tmp", ".txt")
Set MyFile = fso.CreateTextFile(tempname, True)
MyFile.Write msg
MyFile.Close
Return = WshShell.Run ("blat.exe "& tempname &" -t "& recipient &" -server
svmxmi.milchstrasse.de -f
[EMAIL PROTECTED] -subject EventlogError_auf_" & PCName, 0, True)
fso.DeleteFile(tempname)
Set fso = Nothing
Set WshShell = Nothing
Set MyFile = Nothing
End Sub
Function GetInputbyBox(startwert)
If startwert = "start" then
inputvar = MsgBox ("Das Script wurde ohne Kommandozeilenparameter gestartet!" &
vbcrlf &"M�chtest Du diese Parameter jetzt
eingeben?", vbOKCancel, "Eventlog-Watcher")
If inputvar = 1 Then 'OK wurde geklickt
GetInputbyBox "mail"
Else ' Cancel wurde geklickt
MsgBox ("Das Script wird beendet")
WScript.Quit 1
End if
Elseif startwert = "mail" Then
recipient = InputBox("An wen sollen die" & vbcrlf &"Benachrichtigungs-Mails
verschickt werden?", "Eventlog-Watcher",
"[EMAIL PROTECTED]")
If recipient <> "" Then 'OK wurde geklickt
GetInputbyBox "error"
Else ' Cancel wurde geklickt
MsgBox ("Das Script wird beendet")
WScript.Quit 1
End If
Elseif startwert = "error" Then
errortype = InputBox("Welcher Eventlog-Type soll �berwacht werden?" & vbcrlf
&"M�gliche Eingaben:"&vbcrlf&"error, warning oder
information"& vbcrlf &"F�r den Abbruch des Scriptes: close", "Eventlog-Watcher")
If errortype = "close" Then
MsgBox "Script wird beendet"
WScript.Quit 1
Elseif errortype = "error" Or errortype = "warning" Or errortype = "information" Then
GetInputbyBox "source"
Else
MsgBox ("Die Eingabe ist fehlerhaft!")
GetInputbyBox "error"
End If
Elseif startwert = "source" Then
source = InputBox("Du kannst optional eine bestimmte Eventlog-Source angeben." &
vbcrlf & vbcrlf &"Bitte achte bei der Eingabe auf
Gross/Kleinschreibung"& vbcrlf &"Eingabewert f�r den Abbruch des Scriptes: close",
"Eventlog-Watcher")
If source = "close" Then
MsgBox "Script wird beendet"
WScript.Quit 1
Else
Exit Function
End If
End If
End Function
| [aspdecoffeehouse] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp