VBS - Eventlog-Einträge (Application- und Systemlog) der letzten 24 h anzeigen
Hallo ans Forum
Wie liest man mit VBS das Eventlog eines Remotecomputers aus?
Konkret will ich alle Warnungen und Errors der letzen 24h des Zielsystems angezeigt bekommen, und zwar die des Application- und des Systemlogs.
Wie geht das?
Bei Batch gehts mit dem Tool dumpel.exe, aber ich möchte von Batch endlich mal wegkommen....
Danke im Voraus
Gruss TuXHunT3R
Edit:
Falls die Unterscheidung von Application und Systemlog zu kompliziert wird, reicht es auch, wenn einfach von allen Logs die Warnungen und Errors herausgelesen werden.
Wie liest man mit VBS das Eventlog eines Remotecomputers aus?
Konkret will ich alle Warnungen und Errors der letzen 24h des Zielsystems angezeigt bekommen, und zwar die des Application- und des Systemlogs.
Wie geht das?
Bei Batch gehts mit dem Tool dumpel.exe, aber ich möchte von Batch endlich mal wegkommen....
Danke im Voraus
Gruss TuXHunT3R
Edit:
Falls die Unterscheidung von Application und Systemlog zu kompliziert wird, reicht es auch, wenn einfach von allen Logs die Warnungen und Errors herausgelesen werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80783
Url: https://administrator.de/contentid/80783
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo TuXHunt3R!
Als Basis (mit ein wenig Formatierung):
Zur Vereinfachung (nur Datumsabfrage) werden alle Events seit gestern (und demnach < 48 Stunden) erfasst.
Noch ein paar Links:
Win32_NTLogEvent Class
How Can I Retrieve Just Audit Failures, Warnings, and Errors from My Event Logs?
Guy's Scripting Ezine 39 - WMI and Event Logs
Grüße
bastla
Als Basis (mit ein wenig Formatierung):
strComputer = "Remotecomputer"
strPath = "D:\Eventlog_EW.csv"
strDelim = ";"
intDays = 1 'ab gestern (Datum - 1)
strDate = CStr(Mid(Date - intDays, 7, 4)) & CStr(Mid(Date - intDays, 4, 2)) & CStr(Mid(Date - intDays, 1, 2))
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(strPath, True)
Set objWMI = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMI.ExecQuery _
("Select * from Win32_NTLogEvent Where " & _
"(Logfile = 'System' Or LogFile = 'Application') And " & _
"EventType < '3' And TimeWritten > '" & strDate & "'") 'nur Typ 1 (Error) und 2 (Warning)
For Each objEvent in colLoggedEvents
With objEvent
strLine = .Logfile
Select Case LCase(.Type)
Case "error"
strLine = strLine & strDelim & "Fehler"
Case "warning"
strLine = strLine & strDelim & "Warnung"
Case Else 'dürfte hier nicht vorkommen
strLine = strLine & strDelim & "Anderer"
End Select
strLine = strLine & strDelim & Mid(.TimeWritten, 7, 2) & "." & Mid(.TimeWritten, 5, 2) & "." & Mid(.TimeWritten, 1, 4)
strLine = strLine & strDelim & Mid(.TimeWritten, 9, 2) & ":" & Mid(.TimeWritten, 11, 2) & ":" & Mid(.TimeWritten, 13, 2)
strLine = strLine & strDelim & .SourceName
If .Category <> "0" Then
strLine = strLine & strDelim & .Category
Else
strLine = strLine & strDelim & "Keine"
End If
strLine = strLine & strDelim & .EventCode
If .User <> "" Then
strLine = strLine & strDelim & .User
Else
strLine = strLine & strDelim & "Nicht zutreffend"
End If
strLine = strLine & strDelim & .ComputerName
End With
'WScript.Echo strLine 'zum Testen über cscript.exe
objFile.WriteLine strLine
Next
objFile.Close
Noch ein paar Links:
Win32_NTLogEvent Class
How Can I Retrieve Just Audit Failures, Warnings, and Errors from My Event Logs?
Guy's Scripting Ezine 39 - WMI and Event Logs
Grüße
bastla
Hallo TuXHunt3R!
Ist ein wenig schwer zu erklären, weil sie eigentlich so aussehen sollte:
Oder noch besser so:
Funktioniert haben sollte aber (wegen der impliziten Typkonversion durch VBS) auch die ursprüngliche Schreibweise - es waren so nur alle CStr() überflüssig.
Grüße
bastla
Ist ein wenig schwer zu erklären, weil sie eigentlich so aussehen sollte:
strDate = Mid(CStr(Date - intDays), 7, 4) & Mid(CStr(Date - intDays), 4, 2) & Mid(CStr(Date - intDays), 1, 2)
dtAbDatum = Date - intDays ' ab welchem Datum (Heute - intDays) soll das Log ausgewertet werden - Ergebnis im Format "TT.MM.JJJJ"
strAbDatum = CStr(dtAbDatum) ' diese Datumsangabe in einen String umwandeln ...
' ... und diesen zerlegen und neu zusammensetzen, damit das Datum in der Form "JJJJMMTT" zur Verfügung steht
strDate = Mid(strAbDatum, 7, 4) & Mid(strAbDatum, 4, 2) & Mid(strAbDatum, 1, 2)
Grüße
bastla
... als Ergänzung:
Wenn Du tatsächlich die Anforderung "letzte 24 Stunden" exakt umsetzen willst, kannst Du es so versuchen:
Grüße
bastla
Wenn Du tatsächlich die Anforderung "letzte 24 Stunden" exakt umsetzen willst, kannst Du es so versuchen:
...
intStd = 24
dtAb = DateAdd("h", -intStd, Now)
strAb = CStr(dtAb)
strDate = Mid(strAb, 7, 4) & Mid(strAb, 4, 2) & Mid(strAb, 1, 2) & _
Replace(Mid(strAb, 12), ":", "") & ".000000+060"
...
Grüße
bastla