EventLog auslesen

10/09/2007 - 10:22 von Thorsten Braun | Report spam
Hallo NG.
Ich möchte gerne den EventLog von Windows mit einem VBScript auslesen und
die Ausgabe in eine Textdatei schreiben. Soweit funktioniert das auch. Jetzt
möchte ich aber noch gerne nur Events auslesen bzw. schreiben die einen
bestimmten EventCode besitzen z.B. nur Events mit dem EventCode 7031. Wo ist
mein DENKFEHLER?

Viele Grüße
Thorsten

Schnipp--
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "oot\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent where
LogFile ='System'")
'config File definieren
const file = "C:\config.dat"
'Variablen für Ausgabe
dim fso, fo, fi
'Array definieren
dim myArray(40)
myArray(0) = 3
myArray(1) = 6
myArray(2) = 8
myArray(3) = 16
myArray(4) = 39
myArray(5) = 104
myArray(6) = 257
myArray(7) = 500
myArray(8) = 770
myArray(9) = 1000
myArray(10) = 1040
myArray(11) = 1069
myArray(12) = 1100
myArray(13) = 1102
myArray(14) = 1103
myArray(15) = 1104
myArray(16) = 1105
myArray(17) = 1106
myArray(18) = 1107
myArray(19) = 1108
myArray(20) = 1109
myArray(21) = 1111
myArray(22) = 2001
myArray(23) = 2004
myArray(24) = 2011
myArray(25) = 3210
myArray(26) = 7000
myArray(27) = 7001
myArray(28) = 7022
myArray(29) = 7023
myArray(30) = 7031
myArray(31) = 7032
myArray(32) = 8003
myArray(33) = 8012
myArray(34) = 8032
myArray(35) = 9001
myArray(36) = 10002
myArray(37) = 10004
myArray(38) = 36871
'-
Set fso = CreateObject("scripting.filesystemobject")
If Not fso.fileexists("c:\forUA.txt") Then
Set MyFile = fso.CreateTextFile("c:\forUA.txt", True)
Else
Set MyFile = fso.openTextFile("c:\forUA.txt", 2, True)
End If
For Each objItem in colItems
if objItem.EventType = 1 then
for i = 0 to UBound(myArray-1)
if objItem.EventCode <> myArray(i) then 'Nur Events schreiben die nicht
in myArray stehen
MyFile.Write objItem.EventCode & "|" & objItem.Logfile & "|" &
objItem.SourceName & "|" & objItem.Type & "|" &
WMIDateStringToDate(objItem.TimeWritten) & vbcrlf
else
WScript.Quit(0)
end if
next
end if
Next
MyFile.Close
WScript.Quit(0)


Function WMIDateStringToDate(dtmDate)
WScript.Echo dtm:
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
& " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" &
Mid(dtmDate,13, 2))
End Function

-Schnapp--
 

Lesen sie die antworten

#1 Martin Resch
10/09/2007 - 10:36 | Warnen spam
Hi Thorsten
Wo ist
mein DENKFEHLER?



Richtig, das ist es...


for i = 0 to UBound(myArray-1)
if objItem.EventCode <> myArray(i) then 'Nur Events schreiben die nicht
in myArray stehen
MyFile.Write objItem.EventCode & "|" & objItem.Logfile & "|" &



Das bedeutet in deiner Schleife gibst du n mal deie Meldung aus, wenn
der Fehler nicht enthalten ist, sonst "nur" n-1 mal...

Richtig wàre es z.B. so

flag = true
for i =...
IF objItem.EventCode = myArray(i) Then flag = false
next

if flag then MyFile.Write objItem.EventCode & "|" & objItem.Logfile & "|" &

(Nicht optimiert, nur das Prinzip).

Gruß
Martin

Ähnliche fragen