Per VBS die Ereignisanzeige auf ein bestimmtes Event hin überwachen?
Ist es möglich, die Ereignisanzeige (event log) von WinXP per VBScript zu überwachen, so dass bei der Einwahl eines VNC-Clients ein anderes Skript automatisch gestartet wird?
Beziehungsweise: ist es generell möglich, ein VBScript als Service zu starten, das dann permanent den EventLog auf einen bestimmten Event überwacht?
Wie müsste so etwas denn grob aussehen?
Bis jetzt ist es mir nur gelungen, gezielt durch den Start eines VBScripts die dann schon vorhandenen Logs nach bestimmten Ereignissen zu durchsuchen. Wie ich allerdings ein permanentes Monitoring umsetze ist mir bis jetzt leider nicht klar.
Ich würde mich sehr freuen, wenn jemand mir dabei auf die Sprünge helfen könnte.
Vielen Dank!
Beziehungsweise: ist es generell möglich, ein VBScript als Service zu starten, das dann permanent den EventLog auf einen bestimmten Event überwacht?
Wie müsste so etwas denn grob aussehen?
Bis jetzt ist es mir nur gelungen, gezielt durch den Start eines VBScripts die dann schon vorhandenen Logs nach bestimmten Ereignissen zu durchsuchen. Wie ich allerdings ein permanentes Monitoring umsetze ist mir bis jetzt leider nicht klar.
Ich würde mich sehr freuen, wenn jemand mir dabei auf die Sprünge helfen könnte.
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139449
Url: https://administrator.de/forum/per-vbs-die-ereignisanzeige-auf-ein-bestimmtes-event-hin-ueberwachen-139449.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Camelidea,
ohne dein exisitierendes Script zu kennen, gäbe es Möglichkeiten, ein VBS für eine bestimmte Zeit
am Laufen zu halten.
Du kannst das VBS aus einer Batch-Datei endlos aufrufen
Das gäbe dir im Falle, wenn du in deinem VBS zum Beispiel Meldungen mit WSCRIPt.ECHO
ausgibst, die Daten in eine Textdatei aus.
Oder du baust dir eine Schleife in dein VBS ein und allen restlichen Code
legst du dir in eine Subroutine.
Beispiel:
Aber sicher gibt es noch mehrere Möglichkeiten. Das könnte man diskutieren, wenn man dein VBS näher kennen würde.
Dann kann man die eleganteste Variante auswählen.
Eventuell ist ja schon eine von meinen beiden Möglichkeiten die Richtige für dich.
Gruss
Tsuki
ohne dein exisitierendes Script zu kennen, gäbe es Möglichkeiten, ein VBS für eine bestimmte Zeit
am Laufen zu halten.
Du kannst das VBS aus einer Batch-Datei endlos aufrufen
:Start
call meine.vbs //nologo >>MeineTextDatei.txt
goto Start
ausgibst, die Daten in eine Textdatei aus.
Oder du baust dir eine Schleife in dein VBS ein und allen restlichen Code
legst du dir in eine Subroutine.
Beispiel:
for i = 1 to 60
MeineSub
Wscript.Sleep 1000 ' für 1000ms "schlafen"
next
Sub MeineSub()
'Dein ganzer Code
EndSub
Dann kann man die eleganteste Variante auswählen.
Eventuell ist ja schon eine von meinen beiden Möglichkeiten die Richtige für dich.
Gruss
Tsuki
Auch Hallo!
Ja, ist möglich. Mittels instsrv.exe und srvany.exe kannst du ein Script als Dienst laufen lassen. Hier unter USBsecure findest du ein Beispiel wo es so gemacht wird.
Allerdings ist für deine Aufgabe wohl eher ein Trigger den du mittels Eventtriggers erstellen kannst die bessere Wahl.
Ja, ist möglich. Mittels instsrv.exe und srvany.exe kannst du ein Script als Dienst laufen lassen. Hier unter USBsecure findest du ein Beispiel wo es so gemacht wird.
Allerdings ist für deine Aufgabe wohl eher ein Trigger den du mittels Eventtriggers erstellen kannst die bessere Wahl.
Hallo Camelidea,
Wenn die VBS das erste Mal startet, ließ dir alle vorhanden IPs erst einmal ein (vielleicht in ein array).
danach läßt du dein VBS "im Kreis" laufen mit einer Zeit von 1 oder aller 10 Sekunden oder was
am besten sinnhaft ist. Die Taktzeit kannst du einstellen über den
in Millisekunden.
Beispiel:
Das ist ungetestet! Aber so ähnlich könnte der Aufbau sein. In diesem Beispiel würde der
VBS-Schnipsel über 12 Stunden laufen.
Dann müßte man sich nur noch einen "Sprung nach draußen" bauen, sprich, wie du das Script jeder Zeit beenden kannst.
Der "Affengriff" geht immer und unter den Prozessen stoppst du einfach "wsrcipt.exe"
Hoffe, erst einmal etwas weitergeholfen zu haben.
Gruss
Tsuki
Wenn die VBS das erste Mal startet, ließ dir alle vorhanden IPs erst einmal ein (vielleicht in ein array).
danach läßt du dein VBS "im Kreis" laufen mit einer Zeit von 1 oder aller 10 Sekunden oder was
am besten sinnhaft ist. Die Taktzeit kannst du einstellen über den
Wscript.Sleep
Beispiel:
Dim MeineIPs(254)
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery ("Select * from Win32_NTLogEvent Where EventType='3' and SourceName='WinVNC4'")
test = 0
I = 0
For Each objEvent In colLoggedEvents
if test < 1 then
last_Message = objEvent.Message
end if
if InStr(lcase(objEvent.Message), "connections") then
test3 = split(objEvent.Message)
test4 = split(test3(2),"::")
MeineIPs(I) = test4(1)
I = I+1
end if
Next
For I = 1 to 4320 ' 43200s = 12h
PruefeIP
Wscript.Sleep 10000 'alle 10 Sekunden weiter
next
Sub PruefeIP()
test = 0
I = 0
For Each objEvent In colLoggedEvents
if test < 1 then
last_Message = objEvent.Message
end if
if InStr(lcase(objEvent.Message), "connections") then
test3 = split(objEvent.Message)
test4 = split(test3(2),"::")
If MeineIPs(I) = test4(1) then
' nichts machen
Else
' weitere Anweisungen
MeineIPs(I) = test4(1)
I = I+1
End If
end if
End Sub
VBS-Schnipsel über 12 Stunden laufen.
Dann müßte man sich nur noch einen "Sprung nach draußen" bauen, sprich, wie du das Script jeder Zeit beenden kannst.
Der "Affengriff" geht immer und unter den Prozessen stoppst du einfach "wsrcipt.exe"
Hoffe, erst einmal etwas weitergeholfen zu haben.
Gruss
Tsuki
Zitat von @Camelidae:
@Tommy:
Danke für den Hinweis auf die zwei *.exe. Beim Microsoft Support ist dort WinXP allerdings nicht vermerkt. Trifft das auf XP
trotzdem zu, oder verdreh ich da gerade etwas?
Wie meinst du das mit dem Eventtrigger?
Danke nochmal!
Gruss,
Camelidae
@Tommy:
Danke für den Hinweis auf die zwei *.exe. Beim Microsoft Support ist dort WinXP allerdings nicht vermerkt. Trifft das auf XP
trotzdem zu, oder verdreh ich da gerade etwas?
Wie meinst du das mit dem Eventtrigger?
Danke nochmal!
Gruss,
Camelidae
Hallo,
ja, die 2 Exe funktionieren auch unter XP. Habe das schon mehrfach verwendet.
Eventtriggers ist genau das was du suchst. Du musst dann nicht mehr das Eventlog durchsuchen. Mit Eventtriggers kannst du einen Trigger auf ein vordefiniertes Event setzen.
Tritt dieses Event dann ein, dann wird von Eventtriggers automatisch die vorher definierte Aktion ausgeführt.
Beispiele:
Setzen eines Triggers: eventtriggers /create /eid 7 /tr EventID7 /ru NAME /rp PASSWORT /tk "C:\Temp\Eventtriggers\mail.cmd"
Alle Trigger wieder löschen: eventtriggers /delete /TID *
Hier steht noch etwas mehr. Sonst hilft dir Google auch weiter.