f94649
Goto Top

Mit Taskplaner mehrere Scripte zeitversetzt starten (Beim Systemstart)

Hallo, ich bin neu hier. Das ist mein erster Beitrag, daher bitte ich um etwas Nachsicht.

Hallo,

ich möchte unter Windows XP Professional sowie Windows Server 2003 mit Hilfe des Taskplaners mehrere voneinander unabhängige Prozesse starten. Diese werden gestartet durch ein Perl-Script das jeweils mit unterschiedlichen Parametern aufgerufen wird. Zusätzlich ist zu erwähnen, daß jeder Prozess auch mit einem unterschiedlichen Betriebssystem-User laufen muss. Dies habe ich versucht dadurch zu erreichen, daß ich mehrere Tasks über den Taskplaner erzeugt habe, die beim Systemstart automatisch gestartet werden sollen. Wenn ich die Prozesse nacheinander (mit jeweils einigen Sekunden Wartezeit) manuell starte, funktioniert alles. Wenn ich dann aber einen Neustart mache, versucht der Taskplaner-Dienst die Prozesse alle parallel zu starten. Dies funktioniert dann nicht und ich bekomme im Logfile die Meldung (beispielhaft für einen Prozess):

"s99axaproespool_win_start_jt_batch_boot_P3_JT2.job" (perl.exe)
Ende: 05.06.2009 07:59:34
Ergebnis: Der Task wurde mit folgendem Ergebniswert abgeschlossen: (1).

Meine Idee wäre jetzt, die Startaufrufe in eine Batch-Datei zu stellen und jeweils nacheinander mit einem sleep-Aufruf dazwischen zu starten. Das Problem wäre dann aber, wie ich es hinbekomme, daß dann jeweils unterschiedliche Betriebssystem-User verwendet werden. Unter Linux gäbe es dafür z.B. den Befehl "su". Gibt es so etwas auch mit Bordmitteln unter Windows?


Gruß

Jürgen

Content-Key: 117548

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: 66268
66268 05.06.2009 um 11:53:07 Uhr
Goto Top
Hey,

wäre es eien Lösung für dich ein Perl-Script zu schreiben welches die anderen zeitversetzt startet?
In Perl gibts die sleep(); Funktion. In die Klammer schreibst einfach die Anzahl der Sekunden wie lange das Script nix machen soll.

Mit dem Taskplaner alleine bekommst das nicht hin. Kannst auch genauso eine Batch schreiben die die sleep.exe benutzt um die Zeitverszögerung zu ermöglichen, ist das gleiche Prinzip. Allerdings müsstest die sleep.exe auf jedem Client ins system32 packen oder von nem Netzlaufwerk aus starten was ich jetzt nicht so schön finde wie Lösung nur mit Perl.

Grüßle
Mitglied: F94649
F94649 05.06.2009 um 13:26:36 Uhr
Goto Top
Hallo,

danke für Deine schnelle Antwort. Leider war ich zu dem Zeitpunkt noch nicht fertig mit meiner Frage und habe sie nur zwischengespeichert. Die Lösung mit dem Perl-Script hilft mir insofern nicht weiter, als daß ich dann leider auch keine unterschiedlichen BS-User verwenden kann. Oder doch?

Gruß

Jürgen
Mitglied: 66268
66268 05.06.2009 um 13:54:02 Uhr
Goto Top
Okay so bringt dir das natürlich nix.

Wenn du die Tasks mit der GUI anlegst kannst du da ja nen Benutzer mitgeben unter dem der Task gestartet wird.

Dann hätte ich noch die Idee dass du die anderen Tasks aus der Batch Datei startest und zwar mit

schtasks.exe /run /TASKNAME1

sleep 20

schtasks.exe /run /TASKNAME2

sleep 20

usw.

Vielleicht hilft dir das weiter...

Grüßle
Mitglied: F94649
F94649 05.06.2009 um 15:07:52 Uhr
Goto Top
Hallo mgruber,

recht herzlichen Dank. So funktioniert es. Auf meinem XP-System sieht allerdings die Syntax ein bißchen anders aus:

schtasks.exe /run /tn "TASKNAME1"

Gruß

Jürgen
Mitglied: 66268
66268 05.06.2009 um 15:11:33 Uhr
Goto Top
ja du hast Recht. War mein Fehler, sorry.

Hauptsache es läuft ;)