> 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

Antwort per Email an