VBS - Sub soll um eine bestimme Uhrzeit gestartet werden
Ich habe ein VBS Script welches um 2:00 Uhr einen Prozess killt und den selbigen um 3:00 wieder startet. Dies habe ich in einem Skript mit 2 Subs gelöst, Sub kill und Sub start. Beide sind in einem loop da es täglich ausgeführt wird und das Script immer im Hintergrund läuft. Damit dies mit der Zeitplanung hin kommt, arbeite ich mit einem Sleep. Dies ist aber sehr mühsam, da jedes Mal bei einem Neustart des Skripts die Sleepdauer neu ausgerechnet und eingetragen werden muss. Daher möchte ich dies via Uhrzeit steuern. Sprich, wenn die Systemzeit = 2:00 Uhr starte Sub kill, wenn Systemzeit = 3:00 starte Sub start. Wie kriege ich das hin in VBS?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115736
Url: https://administrator.de/contentid/115736
Ausgedruckt am: 23.11.2024 um 16:11 Uhr
14 Kommentare
Neuester Kommentar
MUHAHAHAHAHAHAHHAAHHAHAHA, selten so gelacht...
Frage: kennst Du den Taskplaner?
Machst Du 2x Script, eines für 2:00 Uhr, anderes für 3:00 Uhr...
Lonesome Walker
Frage: kennst Du den Taskplaner?
Machst Du 2x Script, eines für 2:00 Uhr, anderes für 3:00 Uhr...
Lonesome Walker
Servus,
entweder wie LSW schon schrieb zwei scripte - oder:
PS: DIe Kombination von:
Wird Hier nicht gerne gesehen - wenn dann das Script - wobei es egal ist ob es sich um VBS/CMD oder Trallala² handelt
- nicht "dabei" ist.
Gruß
entweder wie LSW schon schrieb zwei scripte - oder:
- wenn Dienst aktiv stoppen - und weiter im Text
- wenn DIenst gestoppt starten - und weiter im Text
PS: DIe Kombination von:
Ich habe ein VBS Script
Wie kriege ich das hin in VBS?
Wie kriege ich das hin in VBS?
Wird Hier nicht gerne gesehen - wenn dann das Script - wobei es egal ist ob es sich um VBS/CMD oder Trallala² handelt
- nicht "dabei" ist.
Gruß
Moin Moin
Entweder du gibst deinen Account die Rechte oder du wendest dich an die Person die das darf.
Alles andere ist eher Klöterkram.
Gruß L.
Zitat von @Fixu:
Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner.
Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen.
Und, lachst du noch immer? =)
Nun ich finde es zumindest erheiternd das du keine Task definieren darfst, aber Prozesse automatisch per Skript killen darfst.Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner.
Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen.
Und, lachst du noch immer? =)
Entweder du gibst deinen Account die Rechte oder du wendest dich an die Person die das darf.
Alles andere ist eher Klöterkram.
Gruß L.
Hallo Fixu,
also wenn schon, dann muss es so heissen:
Besser ist aber:
Gruß Dieter
also wenn schon, dann muss es so heissen:
Zeit = "& time &" Ergebnis = "& Time &"
Zeit = ""& time &"" Ergebnis = "Time"
Besser ist aber:
If Time = CDate("11:41:30") Then
Gruß Dieter
Hallo Fixu,
so wird das nicht funktionieren. Durch Dein Sleep, kannst Du keinen erfolgreichen Vergleich dürchführen.
In jedem Fall sollte ein Zeitfenster geprüft werden z.B.:
Gruß Dieter
so wird das nicht funktionieren. Durch Dein Sleep, kannst Du keinen erfolgreichen Vergleich dürchführen.
In jedem Fall sollte ein Zeitfenster geprüft werden z.B.:
If Time >= CDate("02:00:00") And <= CDate("02:01:00") Then
Gruß Dieter
Hallo Fixu,
stimmt, dass hatte ich jetzt nicht bedacht.
Aber dann könnte ma ja mit Time eine Variable auf True/False setzen und diese wiederum gegenseitig zurücksetzen oder zu einem späteren Zeitpunkt beide zurücksetzen. Nur so ein Gedanke.
Gruß Dieter
PS. Bleibt auch noch die Möglichkeit mit Zeitfenster das ganze Script zu überspringen.
stimmt, dass hatte ich jetzt nicht bedacht.
Aber dann könnte ma ja mit Time eine Variable auf True/False setzen und diese wiederum gegenseitig zurücksetzen oder zu einem späteren Zeitpunkt beide zurücksetzen. Nur so ein Gedanke.
Gruß Dieter
PS. Bleibt auch noch die Möglichkeit mit Zeitfenster das ganze Script zu überspringen.
IMO ist doch nur eine zusätzliche Abfrage nötig,
Im Zeitfenster Killen wenn läuft,
Ausserhalb starten wenn nicht läuft.
Gruß
LotPings
Edit Zeile 24 geändert; falsches if Then entsorgt
Im Zeitfenster Killen wenn läuft,
Ausserhalb starten wenn nicht läuft.
Option Explicit
Dim objWMIService, objProcess, colProcess, WshShell
Dim strComputer, strProcessKill
Dim Anfang, Ende
Set WshShell = CreateObject("WScript.Shell")
strComputer = "."
strProcessKill = "'Datei.exe'"
Anfang = CDate("02:00:00")
Ende = CDate("03:00:00")
Call Schleife
Sub Schleife
Do
wscript.sleep 1000
Call Vergleich
loop
End Sub
Sub Vergleich
If ((Time >= Anfang) And (Time <= Ende))
Call Kill
else
Call Start
End If
End Sub
Sub Kill
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
End Sub
Sub Start
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
Exit Sub ' Wenn Proc schon läuft brauchen wir nicht starten
Next
WshShell.Run "Hier kommt die .exe rein"
End Sub
Wscript.Quit
Gruß
LotPings
Edit Zeile 24 geändert; falsches if Then entsorgt
Hallo LotPings,
also, irgendwie steh ich jetzt auf 'm Schlauch
Die Funktion Kill und Start soll doch jeweils nur einmal ausgeführt werden oder?
und was ist bitte in Zeile 24:
ist das auch ein Trick, den ich nocht nicht kenne.
Gruß Dieter
also, irgendwie steh ich jetzt auf 'm Schlauch
Die Funktion Kill und Start soll doch jeweils nur einmal ausgeführt werden oder?
und was ist bitte in Zeile 24:
else If Then
ist das auch ein Trick, den ich nocht nicht kenne.
Gruß Dieter
Nö, da hat sich mein Editor vergaloppiert und ich habs nicht gemerkt, soll nur ein else sein. Ich ändere das oben.
Da das Script nach der Änderung ja prüft ob der Process läuft, wird auch nur einmal ausserhalb des Zeitfensters gestartet.
Umgekeht wird innerhalb des Zeitfensters ja kein Process mehr gefunden der gestoppt werden könnte wenn er nicht läuft.
Gruß
LotPings
Da das Script nach der Änderung ja prüft ob der Process läuft, wird auch nur einmal ausserhalb des Zeitfensters gestartet.
Umgekeht wird innerhalb des Zeitfensters ja kein Process mehr gefunden der gestoppt werden könnte wenn er nicht läuft.
Gruß
LotPings
Hallo LotPings,
aja, hab ich doch glatt übersehen, dass Du den unteren Teil auch geändert hast
Gruß
aja, hab ich doch glatt übersehen, dass Du den unteren Teil auch geändert hast
Gruß