VBS in Aufgabenplanung richtig Einstellen
Hallo, ich habe jetzt nach langem hin und her endlich geschafft ein vbs Skript durch die Aufgabenplanung nach dem Starten des PC jede Minute auszuführen. Leider haben diese Einstellungen so, dass es funktioniert zur Folge, dass jedes mal eine neue Instanz gestartet wird, und die alte nicht beendet wird, sodass sich nach einiger Zeit ein ganzer Haufen an Prozessen der Aufgabenplanung und Windows PowerShell anhäufen. Ich habe zwar eingestellt die Aufgabe nach 1 Minute zu beenden, aber dies scheint nicht ganz zu funktionieren. In den weiteren Einstellungen habe ich die Regel, dass falls die Aufgabe bereits ausgeführt wird eine neue Instanz parralel ausgeführt werden soll, da keine der anderen Möglichkeiten zu einem Erfolg geführt haben.
Was könnte es da für Lösungen geben?
Was könnte es da für Lösungen geben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4102726788
Url: https://administrator.de/forum/vbs-in-aufgabenplanung-richtig-einstellen-4102726788.html
Ausgedruckt am: 12.05.2025 um 11:05 Uhr
5 Kommentare
Neuester Kommentar

Moin.Moin.
Ich bin jetzt mal ganz unverschämt und stelle die Frage "Was genau macht das Skript überhaupt und wie sehen sämtliche Einstellungen des Tasks aus?"
Es bringt ja nichts an den Symptomen rum zu Doktor'n wenn man die Ursache beheben könnte! Irgendwas scheint da ja in deinem Skript schief zu laufen, nur zum Hellsehen ist mir meine Zeit aber ehrlich gesagt zu schade.
P.
Ich bin jetzt mal ganz unverschämt und stelle die Frage "Was genau macht das Skript überhaupt und wie sehen sämtliche Einstellungen des Tasks aus?"
Es bringt ja nichts an den Symptomen rum zu Doktor'n wenn man die Ursache beheben könnte! Irgendwas scheint da ja in deinem Skript schief zu laufen, nur zum Hellsehen ist mir meine Zeit aber ehrlich gesagt zu schade.
P.
Hallo,
lass mich raten: VBS damit PS die Klappe hält? Also Fenster nicht aufpoppt?
Die Lösung ist ganz einfach. Das Probem gibt es doch auch bei Backups etc. Wie sag ichs meinen Kinde?
.lock oder .lck - da kann man kreativ sein!
Wenn im PS lck schreibt, dann kannst du dies hernehmen dass der Job gerade läuft. Startet PS erneut, einfach eine if Bedingung einfügen. Wenn laueft.lck vorhanden, dann tue nichts. PS wird beendet und das war es.
Verfeinern geht auch. Wenn es crasht und die lck liegen bleibt tut PS Script nie mehr was. Man kann einfach die Datei händisch löschen oder aber automatisch.
Automaitisch? PowerShell kann gut mit einem Datum umgehen. Einfach Datum/ Zeit mit der Datei vergleichen. Ist die älter als x Minuten lösche die Weg. Zack das Programm läuft wieder.
ACHTUNG. CreationTime ist unser Feind - File System Tunneling: https://www.msxfaq.de/code/filsystemtunnel.htm
LastWriteTime und die Sache ist rund. Vergleichst du immer diese Attribut mit der Tageszeit sollte es laufen.
Hinweis:
- aus meinen produktiven entnommen. Sollte aber laufen
- Zeitunterschied und Lock Datei schreiben in Funktionen verpackt
- Hier nach 10 min. automatischer Release
- Neuanlage der LCK Datei, damit immer aktuelle Zeit herangezogen wird!
- File System Tuenneling auf die Spitze getrieben! Man kann auch direkt LastWriteTime hernehmen.
- RestartBMV ist wieder eine Funktion die den eigentlich Code ausführt!
-- da musst du dein Script/ Block oder Function einsetzen!!! Der eig. Call.
mfg Crusher
lass mich raten: VBS damit PS die Klappe hält? Also Fenster nicht aufpoppt?
Die Lösung ist ganz einfach. Das Probem gibt es doch auch bei Backups etc. Wie sag ichs meinen Kinde?
.lock oder .lck - da kann man kreativ sein!
Wenn im PS lck schreibt, dann kannst du dies hernehmen dass der Job gerade läuft. Startet PS erneut, einfach eine if Bedingung einfügen. Wenn laueft.lck vorhanden, dann tue nichts. PS wird beendet und das war es.
Verfeinern geht auch. Wenn es crasht und die lck liegen bleibt tut PS Script nie mehr was. Man kann einfach die Datei händisch löschen oder aber automatisch.
Automaitisch? PowerShell kann gut mit einem Datum umgehen. Einfach Datum/ Zeit mit der Datei vergleichen. Ist die älter als x Minuten lösche die Weg. Zack das Programm läuft wieder.
ACHTUNG. CreationTime ist unser Feind - File System Tunneling: https://www.msxfaq.de/code/filsystemtunnel.htm
LastWriteTime und die Sache ist rund. Vergleichst du immer diese Attribut mit der Tageszeit sollte es laufen.
Hinweis:
- aus meinen produktiven entnommen. Sollte aber laufen
- Zeitunterschied und Lock Datei schreiben in Funktionen verpackt
- Hier nach 10 min. automatischer Release
- Neuanlage der LCK Datei, damit immer aktuelle Zeit herangezogen wird!
- File System Tuenneling auf die Spitze getrieben! Man kann auch direkt LastWriteTime hernehmen.
- RestartBMV ist wieder eine Funktion die den eigentlich Code ausführt!
-- da musst du dein Script/ Block oder Function einsetzen!!! Der eig. Call.
[string]$lckFile = "C:\temp\in_arbeit.lck"
Function CreateLckFile() {
$null = New-Item -ItemType "file" -Path $lckFile;
# Fix NTFS Tunnellig
$(Get-Item -Force $lckFile).CreationTime = $(Get-Item -Force $lckFile).LastWriteTime;
}
Function LckTimeDiff() {
$lckFileCreationTime = $((Get-Item $lckFile).CreationTime)
$Diffobj = $(Get-Date) - $lckFileCreationTime
[int]$Script:DiffInMin = [int]$Diffobj.TotalMinutes
}
Function LckAndStart() {
if (! (Test-path -path $lckFile)) {
CreateLckFile
RestartBMV
Remove-Item $lckFile -Force
} else {
LckTimeDiff
IF ($DiffInMin -gt 10 ) {
Remove-Item $lckFile -Force
CreateLckFile
RestartBMV
Remove-Item $lckFile -Force
}
}
}
LckAndStart
mfg Crusher

Hier hast du deinen Übeltäter
-noexit
Der Parameter führt dazu das die Powershell-Session nach dem Skript offen bleibt und nie geschlossen wird ...Zitat von @4091525239:
Hier hast du deinen Übeltäter
Hier hast du deinen Übeltäter
-noexit
Der Parameter führt dazu das die Powershell-Session nach dem Skript offen bleibt und nie geschlossen wird ...Oh man
Dennoch könnte man PS optimieren. Gerade beim Webrequest wegen des Timeout
1 min Abstand ist nicht viel. Insbesondere wenn man sich den Standard Timeout ansieht. Alternativ könnte man auch über einen Loop innerhalb von PS nachdenken. Lock Datei ist da vlt. etwas viel ....
Optimieren lässt es sich, wenn du die IP bei dir lokal zwischen speicherst. Die godaddy IP wird sich ja nur auf Auruf ändern. Hast du keine Änderung, brauchst du die API doch gar nicht ansprechen.
Hast du eine neue IP, dann den Abgleich mit der godaddy IP dann nur als Erfolgskontrolle nach IP Änderung machen.
mfg Crusher