edi.pfisterer
Goto Top

Ereignisanzeige in html ausgeben

Da ich gerade eine Anfrage hatte, aus der Ereignisanzeige herauszulesen, wer welches Dokument ausgedruckt hat und weil ich nichts entsprechendes hier gefunden habe...

Hallo Jungs und Mädls!
Anbei ein kurzes Script, das den Inhalt der Ereignisanzeige in eine html-Datei ausgibt...
(Falls es mal wieder jemand brauchen sollte... und damit ich es selbst wieder finde, wenn ichs mal wieder brauche, poste ich es jetzt hier schnell)

Ursprung ist dieses Script hier - Danke an Biber

Ich habe es lediglich um die Ausgabe in einer html-Datei erweitert - no big deal...

datei= "c:\logfiles.html"  
Set fs = CreateObject("Scripting.FileSystemObject")  
set dateineu = fs.createtextfile(datei, true)
dateineu.write "<html><head><title>Ereignisanzeige</title></head><body text=""#000000"" bgcolor=""#FFFFFF"" ><font face=""verdana"""  

dateineu.close
set dateineu = nothing

CONST EVENTTYPE_ERROR             = "1"  
CONST EVENTTYPE_WARNING           = "2"  
CONST EVENTTYPE_INFORMATION       = "3"  
CONST EVENTTYPE_SUCCESSAUDIT      = "4"  
CONST EVENTTYPE_FAILUREAUDIT      = "5"  

strComputer = "."  
arrEventType = array( EVENTTYPE_ERROR, EVENTTYPE_WARNING , EVENTTYPE_FAILUREAUDIT)
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2")  
strSelect = "Select * from Win32_NTLogEvent Where Logfile = 'System'"  
'--------------------> hier 4 Beispiele für das Zusammenbasteln des SELECT-Strings  
'--------------------> wahlweise auskommentieren  
' Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & "1" & "' ")  
 Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & EVENTTYPE_INFORMATION & "' ")  
' Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType <> '" & EVENTTYPE_ERROR & "' ")  
'Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & arrEventType(1) & "' ")  
'Remember: arrEventType(1) == EVENTTYPE_WARNING  
For Each objEvent In colLoggedEvents


      inhalt = "Category: " & objEvent.Category & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt & "Computer Name: " & objEvent.ComputerName & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt &  "Event Code: " & objEvent.EventCode & "&nbsp;&nbsp;&nbsp;<br>"  
      inhalt = inhalt &  "<b>Message: " & objEvent.Message & "</b><br>"  
      inhalt = inhalt &  "Record Number: " & objEvent.RecordNumber & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt &  "Source Name: " & objEvent.SourceName & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt &  "Time Written: " & objEvent.TimeWritten & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt &  "Event Type: " & objEvent.Type & "&nbsp;&nbsp;&nbsp;"  
      inhalt = inhalt &  "User: " & objEvent.User & "&nbsp;&nbsp;&nbsp;"  

      if instr(objEvent.SourceName,"Print") >=1 then  
        set dateineu = fs.OpenTextFile(datei, 8)
        dateineu.write inhalt & "<br><br><br>"  
        dateineu.close
        set dateineu = nothing
      end if

Next

wscript.echo "Arbeit getan, Herr und Meister"  

PS: die if-Abfrage in den letzten Codezeilen kann bei Bedarf natürlich ersatzlos gestrichen oder verändert werden...

lg
Edi

Content-ID: 152168

Url: https://administrator.de/contentid/152168

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

Arano
Arano 01.10.2010 um 21:27:44 Uhr
Goto Top
Ich habe es lediglich um die Ausgabe in einer html-Datei erweitert - no big deal...
PAH, "nur" die Dateierweiterung von txt auf html zu ändern macht aus dem Inhalt noch lange kein HTML - auch nicht wenn man ein paar HTML-Tags verwendet !

Ich frage mich gerade warum ich das jetzt eigentlich gemacht habe - zumal ich noch nie etwas in VBS gemacht habe, aber löschen will ich es jetzt auch nicht mehr... Damit bekommst du deine HTML-Ausgabe (Strict & Valide & und mit Javascript geschmückt):
strLogfileName = "c:\logfile.html"  
strComputer    = "."  

CONST EVENTTYPE_ERROR             = "1"  
CONST EVENTTYPE_WARNING           = "2"  
CONST EVENTTYPE_INFORMATION       = "3"  
CONST EVENTTYPE_SUCCESSAUDIT      = "4"  
CONST EVENTTYPE_FAILUREAUDIT      = "5"  


' oeffne logdatei zum schreiben  
Set objFs      = CreateObject("Scripting.FileSystemObject")  
Set hndLogfile = objFs.createtextfile(strLogfileName, true)
' schriebe html-header  
hndLogfile.write "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN""" & VBCRLF _  
                &"    ""http://www.w3.org/TR/html4/strict.dtd"">" & VBCRLF _  
                &"<html>" & VBCRLF _  
                &"  <head>" & VBCRLF _  
                &"    <title>Ereignisanzeige</title>" & VBCRLF _  
                &"    <style type=""text/css"">" & VBCRLF _  
                &"      <!--" & VBCRLF _  
                &"        html, body        { margin:0px; padding:0px; }" & VBCRLF _  
                &"        div.event span    { display:block; cursor:pointer; }" & VBCRLF _  
                &"        div.event:link," & VBCRLF _  
                &"        div.event:visited { background-color:#000000; }" & VBCRLF _  
                &"        div.event:hover," & VBCRLF _  
                &"        div.event:active  { background-color:#f0f0f0; }" & VBCRLF _  
                &"      -->" & VBCRLF _  
                &"    </style>" & VBCRLF _  
                &"    <script type=""text/javascript"">" & VBCRLF _  
                &"      <!--" & VBCRLF _  
                &"        var eventColorOpened = ""#f0f0f0"";" & VBCRLF _  
                &"        var eventColorClosed = ""#ffffff"";" & VBCRLF _  
                &"        function toggle_events(IDS)" & VBCRLF _  
                &"        {" & VBCRLF _  
                &"            for(var x=0; x<IDS.length; ++x)" & VBCRLF _  
                &"            {" & VBCRLF _  
                &"                document.getElementById(""event_details_""+IDS[x]).style.display = ""none"";" & VBCRLF _  
                &"            }" & VBCRLF _  
                &"        }" & VBCRLF _  
                &"        function toggle_event(ID)" & VBCRLF _  
                &"        {" & VBCRLF _  
                &"            var event        = document.getElementById(""event_""+ID);" & VBCRLF _  
                &"            var eventDetails = document.getElementById(""event_details_""+ID);" & VBCRLF _  
                &"            if(eventDetails.style.display != ""block"")" & VBCRLF _  
                &"            {" & VBCRLF _  
                &"                eventDetails.style.display  = ""block"";" & VBCRLF _  
                &"                event.style.backgroundColor = eventColorOpened;" & VBCRLF _  
                &"            }" & VBCRLF _  
                &"            else" & VBCRLF _  
                &"            {" & VBCRLF _  
                &"                eventDetails.style.display  = ""none"";" & VBCRLF _  
                &"                event.style.backgroundColor = eventColorClosed;" & VBCRLF _  
                &"            }" & VBCRLF _  
                &"        }" & VBCRLF _  
                &"      -->" & VBCRLF _  
                &"    </script>" & VBCRLF _  
                &"  </head>" & VBCRLF _  
                &"  <body>" & VBCRLF & VBCRLF _  
                &"  <h1>Ereignisanzeige</h1>" & VBCRLF _  
                &VBCRLF
                
' tue erstelle hole... keine ahnung was  
Set objWMIService  = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2")  
' query systemlog  
strSelectSystemlog = "Select * from Win32_NTLogEvent Where Logfile = 'System'" _  
                    &"AND EventType <= " & EVENTTYPE_WARNING _  
                    &"AND SourceName = 'Print'"  
'                    &"AND SourceName = 'EventLog'"  
'                    &""  
' query ausfuehren  
Set colLoggedEvents = objWMIService.ExecQuery(strSelectSystemlog)

Dim strEventIds
For Each objEvent In colLoggedEvents
    hndLogfile.write "<div class=""event"" id=""event_"& objEvent.RecordNumber &""">" & VBCRLF _  
                    &"  <span onclick=""toggle_event('" & objEvent.RecordNumber & "')"">" _  
                    &     objEvent.Type         & " - " & objEvent.User      & " @ " _  
                    &     objEvent.ComputerName & " : " & objEvent.EventCode & " = " _  
                    &     objEvent.SourceName _
                    &"  </span>" & VBCRLF _  
                    &"  <ul id=""event_details_" & objEvent.RecordNumber & """>" & VBCRLF _  
                    &"    <li>Category: " & objEvent.Category & "</li>" & VBCRLF _  
                    &"    <li>Computer Name: " & objEvent.ComputerName & "</li>" & VBCRLF _  
                    &"    <li>Event Code: " & objEvent.EventCode & "</li>" & VBCRLF _  
                    &"    <li>Message: " & objEvent.Message & "</li>" & VBCRLF _  
                    &"    <li>Record Number: " & objEvent.RecordNumber & "</li>" & VBCRLF _  
                    &"    <li>Source Name: " & objEvent.SourceName & "</li>" & VBCRLF _  
                    &"    <li>Time Written: " & objEvent.TimeWritten & "</li>" & VBCRLF _  
                    &"    <li>Event Type: " & objEvent.Type & "</li>" & VBCRLF _  
                    &"    <li>User: " & objEvent.User & "</li>" & VBCRLF _  
                    &"  </ul>" & VBCRLF _  
                    &"</div>" & VBCRLF _  
                    & VBCRLF
    strEventIds = strEventIds & ",'" & objEvent.RecordNumber & "'"  
Next

' entferne das komma am anfang der zeichenkette  
strEventIds = Mid(strEventIds, 2)

' schreibe footer in logdatei  
hndLogfile.write "    <script type=""text/javascript"">" & VBCRLF _  
                &"      <!--" & VBCRLF _  
                &"        toggle_events(new Array(" & strEventIds & "));" & VBCRLF _  
                &"      -->" & VBCRLF _  
                &"    </script>" & VBCRLF _  
                &"  </body>" & VBCRLF _  
                &"</html>"  
' schließe logdatei  
hndLogfile.close
Set hndLogfile = nothing

' melde beendete arbeit  
wscript.echo "Das aktuelle Sytemlog steht nun in einer HTML-Version zur ferfuegung." & VBCRLF & strLogfile  

' ENDE  
Hab es nebenbei auch gleich noch etwas überarbeitet

~Arano
mkrasselt1
mkrasselt1 09.10.2010 um 11:17:07 Uhr
Goto Top
welche scriptsprache ist das ?
Arano
Arano 09.10.2010 um 11:25:17 Uhr
Goto Top
Hallo mkrasselt1

Das ist VBS - Visual Basic Script

Einfach alles kopieren und in z.B.: "syslogToHtml.vbs" speichern.
Die Datei kann dann auch per Doppelklick ausgeführt werden - dauert ein bisschen.

~Arano
mkrasselt1
mkrasselt1 09.10.2010 um 11:44:51 Uhr
Goto Top
Hallo Arno,
danke, hat fast funktioniert.
er zeigt mir einen Fehler in
zeile 13
Zeichen 1
Fehler: Ungültiger Prozeduraufruf oder ungültiges Argument
Code: 800A0005
Quelle: Laufzeitfehler in Mircrosoft VB Script
Sagt dir das was ?
ist nicht dringend, aber ich sammle solche system Scripte, hab später mal was damit vor ...

Michael
Arano
Arano 09.10.2010 um 12:01:28 Uhr
Goto Top
Hm...

...das ist ja blöde jetzt oO
Wie ich schon im meinem erstem Beitrag schrieb, habe ich keine Ahnung von VBS bzw. waren das meine ersten Erfahrungen mit VBS.
Zeile 13 Teichen 1 ?
Ich glaube es zwar nicht ganz, aber versuch mal das "set" in Zeile 13 durch "Set" zu ersetzen.


~Arano
mkrasselt1
mkrasselt1 09.10.2010 um 12:23:59 Uhr
Goto Top
Aha,
es war nicht nur das "S"
sonder auch die Variable die du verwendet hast:
Deins:
Set hndLogfile = objFs.createtextfile(strLogfile, true)
Richtig:
Set hndLogfile = objFs.createtextfile(strLogfileName, true)
Wie du verstehe ich übrigens nicht das geringste von VB face-smile

Michael
Arano
Arano 10.10.2010 um 17:20:00 Uhr
Goto Top
Oh man...

Wollte das schon gestern machen, kam aber nicht dazu weil men Rechner mich nicht lässt.
Jetzt sitze ich an 500Mhz oO (Gedult ist eine Tugent die ich noch üben muss face-smile )

Nun gut, interessanterweise habe ich den Fehler __nicht__ in meiner Datei stehen, keine Ahnung wie ich den ins Forum bekommen habe !?

Habe es jedenfalls in meinem Post korrigiert, so das es dort nun richtig steht.


Einen schönen Sonntag noch
~Arano