199
boesi666
Skyemugen

Ereignisanzeige in html ausgeben

Mitglied: Edi.Pfisterer
01.10.2010
10:47:37 Uhr
1887 Aufrufe
7 Antworten
Noch nicht bewertet
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...

01.
datei= "c:\logfiles.html" 
02.
Set fs = CreateObject("Scripting.FileSystemObject") 
03.
set dateineu = fs.createtextfile(datei, true) 
04.
dateineu.write "<html><head><title>Ereignisanzeige</title></head><body text=""#000000"" bgcolor=""#FFFFFF"" ><font face=""verdana""" 
05.
 
06.
dateineu.close 
07.
set dateineu = nothing 
08.
 
09.
CONST EVENTTYPE_ERROR             = "1" 
10.
CONST EVENTTYPE_WARNING           = "2" 
11.
CONST EVENTTYPE_INFORMATION       = "3" 
12.
CONST EVENTTYPE_SUCCESSAUDIT      = "4" 
13.
CONST EVENTTYPE_FAILUREAUDIT      = "5" 
14.
 
15.
strComputer = "." 
16.
arrEventType = array( EVENTTYPE_ERROR, EVENTTYPE_WARNING , EVENTTYPE_FAILUREAUDIT) 
17.
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2") 
18.
strSelect = "Select * from Win32_NTLogEvent Where Logfile = 'System'" 
19.
'--------------------> hier 4 Beispiele für das Zusammenbasteln des SELECT-Strings 
20.
'--------------------> wahlweise auskommentieren 
21.
' Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & "1" & "' ") 
22.
 Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & EVENTTYPE_INFORMATION & "' ") 
23.
' Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType <> '" & EVENTTYPE_ERROR & "' ") 
24.
'Set colLoggedEvents = objWMIService.ExecQuery (strSelect   & " AND EventType = '" & arrEventType(1) & "' ") 
25.
'Remember: arrEventType(1) == EVENTTYPE_WARNING 
26.
For Each objEvent In colLoggedEvents 
27.
 
28.
 
29.
      inhalt = "Category: " & objEvent.Category & "&nbsp;&nbsp;&nbsp;" 
30.
      inhalt = inhalt & "Computer Name: " & objEvent.ComputerName & "&nbsp;&nbsp;&nbsp;" 
31.
      inhalt = inhalt &  "Event Code: " & objEvent.EventCode & "&nbsp;&nbsp;&nbsp;<br>" 
32.
      inhalt = inhalt &  "<b>Message: " & objEvent.Message & "</b><br>" 
33.
      inhalt = inhalt &  "Record Number: " & objEvent.RecordNumber & "&nbsp;&nbsp;&nbsp;" 
34.
      inhalt = inhalt &  "Source Name: " & objEvent.SourceName & "&nbsp;&nbsp;&nbsp;" 
35.
      inhalt = inhalt &  "Time Written: " & objEvent.TimeWritten & "&nbsp;&nbsp;&nbsp;" 
36.
      inhalt = inhalt &  "Event Type: " & objEvent.Type & "&nbsp;&nbsp;&nbsp;" 
37.
      inhalt = inhalt &  "User: " & objEvent.User & "&nbsp;&nbsp;&nbsp;" 
38.
 
39.
      if instr(objEvent.SourceName,"Print") >=1 then 
40.
        set dateineu = fs.OpenTextFile(datei, 8) 
41.
        dateineu.write inhalt & "<br><br><br>" 
42.
        dateineu.close 
43.
        set dateineu = nothing 
44.
      end if 
45.
 
46.
Next 
47.
 
48.
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

Mitglied: Arano
Arano schreibt am 01.10.2010 um 21:27:44 Uhr
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):
01.
strLogfileName = "c:\logfile.html" 
02.
strComputer    = "." 
03.
 
04.
CONST EVENTTYPE_ERROR             = "1" 
05.
CONST EVENTTYPE_WARNING           = "2" 
06.
CONST EVENTTYPE_INFORMATION       = "3" 
07.
CONST EVENTTYPE_SUCCESSAUDIT      = "4" 
08.
CONST EVENTTYPE_FAILUREAUDIT      = "5" 
09.
 
10.
 
11.
' oeffne logdatei zum schreiben 
12.
Set objFs      = CreateObject("Scripting.FileSystemObject") 
13.
Set hndLogfile = objFs.createtextfile(strLogfileName, true) 
14.
' schriebe html-header 
15.
hndLogfile.write "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN""" & VBCRLF _ 
16.
                &"    ""http://www.w3.org/TR/html4/strict.dtd"">" & VBCRLF _ 
17.
                &"<html>" & VBCRLF _ 
18.
                &"  <head>" & VBCRLF _ 
19.
                &"    <title>Ereignisanzeige</title>" & VBCRLF _ 
20.
                &"    <style type=""text/css"">" & VBCRLF _ 
21.
                &"      <!--" & VBCRLF _ 
22.
                &"        html, body        { margin:0px; padding:0px; }" & VBCRLF _ 
23.
                &"        div.event span    { display:block; cursor:pointer; }" & VBCRLF _ 
24.
                &"        div.event:link," & VBCRLF _ 
25.
                &"        div.event:visited { background-color:#000000; }" & VBCRLF _ 
26.
                &"        div.event:hover," & VBCRLF _ 
27.
                &"        div.event:active  { background-color:#f0f0f0; }" & VBCRLF _ 
28.
                &"      -->" & VBCRLF _ 
29.
                &"    </style>" & VBCRLF _ 
30.
                &"    <script type=""text/javascript"">" & VBCRLF _ 
31.
                &"      <!--" & VBCRLF _ 
32.
                &"        var eventColorOpened = ""#f0f0f0"";" & VBCRLF _ 
33.
                &"        var eventColorClosed = ""#ffffff"";" & VBCRLF _ 
34.
                &"        function toggle_events(IDS)" & VBCRLF _ 
35.
                &"        {" & VBCRLF _ 
36.
                &"            for(var x=0; x<IDS.length; ++x)" & VBCRLF _ 
37.
                &"            {" & VBCRLF _ 
38.
                &"                document.getElementById(""event_details_""+IDS[x]).style.display = ""none"";" & VBCRLF _ 
39.
                &"            }" & VBCRLF _ 
40.
                &"        }" & VBCRLF _ 
41.
                &"        function toggle_event(ID)" & VBCRLF _ 
42.
                &"        {" & VBCRLF _ 
43.
                &"            var event        = document.getElementById(""event_""+ID);" & VBCRLF _ 
44.
                &"            var eventDetails = document.getElementById(""event_details_""+ID);" & VBCRLF _ 
45.
                &"            if(eventDetails.style.display != ""block"")" & VBCRLF _ 
46.
                &"            {" & VBCRLF _ 
47.
                &"                eventDetails.style.display  = ""block"";" & VBCRLF _ 
48.
                &"                event.style.backgroundColor = eventColorOpened;" & VBCRLF _ 
49.
                &"            }" & VBCRLF _ 
50.
                &"            else" & VBCRLF _ 
51.
                &"            {" & VBCRLF _ 
52.
                &"                eventDetails.style.display  = ""none"";" & VBCRLF _ 
53.
                &"                event.style.backgroundColor = eventColorClosed;" & VBCRLF _ 
54.
                &"            }" & VBCRLF _ 
55.
                &"        }" & VBCRLF _ 
56.
                &"      -->" & VBCRLF _ 
57.
                &"    </script>" & VBCRLF _ 
58.
                &"  </head>" & VBCRLF _ 
59.
                &"  <body>" & VBCRLF & VBCRLF _ 
60.
                &"  <h1>Ereignisanzeige</h1>" & VBCRLF _ 
61.
                &VBCRLF 
62.
                 
63.
' tue erstelle hole... keine ahnung was 
64.
Set objWMIService  = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2") 
65.
' query systemlog 
66.
strSelectSystemlog = "Select * from Win32_NTLogEvent Where Logfile = 'System'" _ 
67.
                    &"AND EventType <= " & EVENTTYPE_WARNING _ 
68.
                    &"AND SourceName = 'Print'" 
69.
'                    &"AND SourceName = 'EventLog'" 
70.
'                    &"" 
71.
' query ausfuehren 
72.
Set colLoggedEvents = objWMIService.ExecQuery(strSelectSystemlog) 
73.
 
74.
Dim strEventIds 
75.
For Each objEvent In colLoggedEvents 
76.
    hndLogfile.write "<div class=""event"" id=""event_"& objEvent.RecordNumber &""">" & VBCRLF _ 
77.
                    &"  <span onclick=""toggle_event('" & objEvent.RecordNumber & "')"">" _ 
78.
                    &     objEvent.Type         & " - " & objEvent.User      & " @ " _ 
79.
                    &     objEvent.ComputerName & " : " & objEvent.EventCode & " = " _ 
80.
                    &     objEvent.SourceName _ 
81.
                    &"  </span>" & VBCRLF _ 
82.
                    &"  <ul id=""event_details_" & objEvent.RecordNumber & """>" & VBCRLF _ 
83.
                    &"    <li>Category: " & objEvent.Category & "</li>" & VBCRLF _ 
84.
                    &"    <li>Computer Name: " & objEvent.ComputerName & "</li>" & VBCRLF _ 
85.
                    &"    <li>Event Code: " & objEvent.EventCode & "</li>" & VBCRLF _ 
86.
                    &"    <li>Message: " & objEvent.Message & "</li>" & VBCRLF _ 
87.
                    &"    <li>Record Number: " & objEvent.RecordNumber & "</li>" & VBCRLF _ 
88.
                    &"    <li>Source Name: " & objEvent.SourceName & "</li>" & VBCRLF _ 
89.
                    &"    <li>Time Written: " & objEvent.TimeWritten & "</li>" & VBCRLF _ 
90.
                    &"    <li>Event Type: " & objEvent.Type & "</li>" & VBCRLF _ 
91.
                    &"    <li>User: " & objEvent.User & "</li>" & VBCRLF _ 
92.
                    &"  </ul>" & VBCRLF _ 
93.
                    &"</div>" & VBCRLF _ 
94.
                    & VBCRLF 
95.
    strEventIds = strEventIds & ",'" & objEvent.RecordNumber & "'" 
96.
Next 
97.
 
98.
' entferne das komma am anfang der zeichenkette 
99.
strEventIds = Mid(strEventIds, 2) 
100.
 
101.
' schreibe footer in logdatei 
102.
hndLogfile.write "    <script type=""text/javascript"">" & VBCRLF _ 
103.
                &"      <!--" & VBCRLF _ 
104.
                &"        toggle_events(new Array(" & strEventIds & "));" & VBCRLF _ 
105.
                &"      -->" & VBCRLF _ 
106.
                &"    </script>" & VBCRLF _ 
107.
                &"  </body>" & VBCRLF _ 
108.
                &"</html>" 
109.
' schließe logdatei 
110.
hndLogfile.close 
111.
Set hndLogfile = nothing 
112.
 
113.
' melde beendete arbeit 
114.
wscript.echo "Das aktuelle Sytemlog steht nun in einer HTML-Version zur ferfuegung." & VBCRLF & strLogfile 
115.
 
116.
' ENDE
Hab es nebenbei auch gleich noch etwas überarbeitet

~Arano
Mitglied: mkrasselt1
mkrasselt1 schreibt am 09.10.2010 um 11:17:07 Uhr
welche scriptsprache ist das ?
Mitglied: Arano
Arano schreibt am 09.10.2010 um 11:25:17 Uhr
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
Mitglied: mkrasselt1
mkrasselt1 schreibt am 09.10.2010 um 11:44:51 Uhr
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
Mitglied: Arano
Arano schreibt am 09.10.2010 um 12:01:28 Uhr
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
Mitglied: mkrasselt1
mkrasselt1 schreibt am 09.10.2010 um 12:23:59 Uhr
Aha,
es war nicht nur das "S"
sonder auch die Variable die du verwendet hast:
Deins:
01.
Set hndLogfile = objFs.createtextfile(strLogfile, true)
Richtig:
01.
Set hndLogfile = objFs.createtextfile(strLogfileName, true)
Wie du verstehe ich übrigens nicht das geringste von VB face-smile

Michael
Mitglied: Arano
Arano schreibt am 10.10.2010 um 17:20:00 Uhr
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
mehr ...Ähnliche Beiträge