andreasa
Goto Top

Suche Möglichkeit per Skript mehrfache Zeitpläne eines eingerichteten Tasks zu erzeugen

Trotz intensiver Recherche im Internet bin ich zu obigen Problem nicht fündig geworden. Da mir hier schon viele Berichte zu Lösungen verholfen haben, hoffe ich diesmal wieder ausreichend Hilfe zu bekommen. Vorab also schonmal recht herzlichen Dank für eure Mühen.

back-to-topAusgangssituation:
Ich habe auf einem Windows 2003 R2 Server (sagen wir mal FS001) mehrere eingerichtete Tasks. Die meisten davon sind schon mit den Standardzeitplänen (wie z.B. "wöchentlich MI und FR 5:00" oder "täglich 5:30" ) ausgestattet. Nun ist sind noch einige Tasks dazugekommen, die ich mit diesen Standardzeitplänen nicht versorgen kann. D.h. ich habe sie als "EINMAL" mit mehrfachen Zeitplänen als Tagesdatum angelegt über den normalen graphischen Assistenten. Hintergrund nicht jede Woche finden diese "Jobs" an den gleichen Wochentagen statt. (z.B. eine Woche Mo-Do 21 Uhr, nächste Woche Mo-Fr 21Uhr, die darauffolgende Woche nur noch Di-Do 21 oder 22 Uhr o.ä.). Wann dieser Job also auszuführen ist, erfahre ich rechtzeitig mindestens 1 Woche vorher. Selbst tageweise unterschiedliche Startzeit kann vorkommen. Wichtig warum das ganze : Ich darf diese Tasks nur dann ausführen lassen, wenn der Auftrag vom Kunden vorliegt. Eine professionelle Zeitplansteuerung wurde leider nicht bewilligt. face-sad

back-to-topProblembeschreibung:
Damit ich nicht jedesmal den Assistenten benutzen muss (jeder Mausklick ist eine potentielle Fehlerquelle face-wink), suche ich nun einen Möglichkeit dieses per Skript zu lösen. Die at.exe von Windows hilft mir da gar nichts. Mit der schtasks.exe komme ich leider auch nicht zum Ziel. Ich kann mir zwar mit
schtasks.exe /query /s FS001 /v /FO TABLE
eine komplette Liste erzeugen wo alle eingerichteten Zeitpläne sichtbar sind, aber mit
schtasks.exe /change
kann ich leider keine Zeitpläne verändern und mit
schtasks.exe /create
kann ich nur vorhandene Jobs ersetzen. Das wäre zwar eine Möglichkeit, jedoch mangelt es hier an der Fähigkeit mehrfache Zeitpläne für einen Job anzulegen. Als Hilsfmittel sei noch folgende Anmerkung gestattet. Diese "ProblemJobs" sind parametergesteuert nach Datum, d.h. für jeden dieser Jobs gibt es sozusagen als Pendant eine datumsgleiche Jobliste (z.B. 20080815.txt für den 15.August).

back-to-topLösungssuche ?
Die MSDN von Microsoft gibt da leider auch wenig Hoffnung dieses "Problem" mittels schtasks.exe hinzubekommen. Nun hoffe ich hier auf Unterstützung von Euch. Ich sehe im Moment den Wald vor lauter Bäumen nicht mehr. Vielleicht läßt sich dies auch mit einem batchgesteuerten VB-Schnipsel lösen. Bin für jede Anregung dankbar. Also liebe Mitstreiter: man bekommt nicht immer die Werkzeuge als Admin, die man gerne hätte, lasst es uns wie immer mit "eigenen Werkzeugen" erreichen face-smile

Edit 15.8.2008

Aufgrund von Anfragen nochmal konkretere Angaben:

  • Die einfache Lösung für jeden Tag einen eigenen Task anzulegen, kenne ich. Aber die Liste der angelegten Tasks wird dann erstens sehr lang und unübersichtlich und zweitens bei Änderung des "auszuführenden Benutzers" (Name/Kennwort) müssten alle schon angelegten Zeitpläne erneuert werden.
  • Die Liste klein zu halten und nur auf "logische Aufgaben" mit mehrfachen Zeitplänen zu beschränken, ist ja auch schon gegeben mittels des graphischen Assistenten von Windows (geplante Tasks)
  • es geht hier vordringlich darum, diese mehrfachen Zeitpläne eines schon eingerichteten Tasks per Skript und nicht per Assistenten zu erstellen.


Ich hoffe nun versteht jeder mein Hilfeersuchen ?

back-to-topEdit 15.9.2008 Hat den keiner eine Idee???

Content-Key: 94500

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

Printed on: April 17, 2024 at 00:04 o'clock

Mitglied: 60730
60730 Sep 24, 2008 at 17:49:26 (UTC)
Goto Top
Edit 15.9.2008 Hat den keiner eine Idee???

doch - und zwar die kombination von schtasks.exe für die "festen" Jobs und AT für die variablen.

Ein batch könnte dann so aussehen:

set /P DATEI=auszuführende Datei:
if not exist %datei% echo Datei nicht vorhanden.
set /P tag=auszuführender Tag (Mo Di Mi Do Fr Sa So):
set /P zeit=auszuführende Uhrzeit hh:mm:
at %zeit% /INTERACTIVE /next:%tag% "%datei%"  


Gruß
Member: AndreasA
AndreasA Sep 25, 2008 at 11:04:07 (UTC)
Goto Top
Hallo TimoBeil,

Danke erst einmal für deinen Vorschlag. Leider führt mich wie bereits oben erwähnt AT.exe nicht zum Ziel. Denn die bereits angelegten Windows-Tasks (siehe Systemsteuerung-->Geplante Tasks) werden nur mittels schtasks /query auch angezeigt. AT gibt nichts davon aus ( Es sind keine Einträge in der Liste vorhanden ).
Diese "Jobs" heissen immer gleich sind quasi nur ein Job! Es ist ein sogenanntes Jobstart-Skript (sagen wir mal C:\BATCH\Jobstart.cmd, Taskname JOBSTART). Diese rufen dann wiederum andere "Batches" in der datumsgleichen Auftragsliste (z.B. job20080815.txt) vom Kunden festgelegt sind.

Zur Veranschaulichung meines Problem am besten mal mit dem Windows-Taskassistenten folgendes mal ausprobieren:
zum Testen eine (leere) Textdatei namens C:\BATCH\JOBSTART.CMD anlegen
Dann mit dem Assistenten einen neuen Task anlegen
Taskname : JOBSTART
Registerkarte Task --> Ausführen: C:\BATCH\JOBSTART.CMD
Registerkarte Zeitplan --> Häkchen setzen bei "Mehrfache Zeitpläne aktivieren"
Alle weiteren Schritte auch unter Registerkarte Zeitplan mittels Button "Neu" wiederholt ausführen:
Task ausführen "Einmal"
Startzeit z.B. "21:00"
Ausführen am: Datum aus Kalender wählen
Button "Übernehmen" drücken

In der Dropdownliste unter der Registerkarte "Zeitplan" findet man nun alle "angelegten Zeitpläne" !!!!
Ich suche hier nun eine Möglichkeit genau diese in der Liste angezeigten Taskzeitpläne zu verändern per Skript (ohne den Assistenten !!!!)
Wie bereits erwähnt ein
schtasks.exe /query /s FS001 /v /FO TABLE >C:\Jobliste.txt
gibt mir all diese "Zeitpläne" als Tabelle aus (im Gegensatz zu AT).
Jedoch kann ich mit schtasks.exe diese nicht manipulieren (siehe meine Einleitung).
Wenn der Assistent dieses vermag muss es doch irgendeine VB / WMI / COM-Funktion geben dieses auch per Script zu tun oder ???

Grüße AndreasA
Mitglied: 60730
60730 Sep 26, 2008 at 12:06:48 (UTC)
Goto Top
Servus,
ich glaube - wir reden aneinander vorbei und anstatt - daß du meinen Tipp befolgst - gibts du mir einen - den ich schon kenne (und nicht benutze) face-wink
ich dosbox - nix klickibunti -wenns auch anders geht

Nochmal:

At & Schtasks sind unterschiedliche Funktionen.

Alles, was entweder per AT oder Schtasks angelegt wird - taucht auch unter schtasks auf.
Nur das, was unter AT angelegt wurde, taucht bei At auf / und - siehe obere Zeile - bei schtasks.

Ergo:

Alles "feste" per schtasks anlegen und alles variable mit AT.
btw:
mit einem Script, daß so ausshieht:

:rem alle tasks löschen und "Zähler für neuen Taks auf null setzen  
At /delete /yes
at zeit /INTERACTIVE /next:tag "datei1"  
at zeit /INTERACTIVE /next:tag "datei2"  
at zeit /INTERACTIVE /next:tag "datei3"  
:rem usw usf
exit

...kannst du mehrere Tasks in einem rutsch anlegen - wenn dir der obere Weg nicht gefällt - dann kannst du diese .cmd verändern, um Jobs zu erzeugen.
"leider" bin ich der einzige, der dir geantwortet hat und "leider" ist die Procedur nicht nur "banal" und simpel - sondern auch schon etwas älter - dafür aber erprobt.

Entweder "traust" du dich das mal auszuprobieren - oder klickst weiter in dem Assistenten rum - oder jemand hat einen "besseren" Tipp.

Gruß
Member: AndreasA
AndreasA Sep 26, 2008 at 12:30:45 (UTC)
Goto Top
Nein nein wir reden nicht aneinander vorbei face-wink
Ich habe deine Intention schon verstanden, jedoch ist sie für meinen Einsatzbereich nicht anwendbar. Mit AT kannst du keine speziellen Benutzer-Credentials hinterlegen. Und ich möchte auch keine ellenlange Liste von angelegten Tasks erzeugen, wenn ich oder meine Kollegen prüfen müssen ob alle Tasks korrekt angelegt sind bzw einzelne Tasks verändert werden müssen (warum auch immer). Diese Tasks mittels " mehrfachen Zeiplan " über den Taskassistenten anzulegen hat(te) durchaus mehrere Gründe, die ich hier auch nicht weiter ausführen möchte. Mir geht es in erster Linie darum, diese (inzwischen teilweise schon für Wochen im voraus angelegten) Zeitpläne skriptgesteuert verändern zu können. Du verstehst?

Im Prinzip suche ich eigentlich nur noch nach der Windowsfunktion/Prozedur die das tut. Vermutlich irgendeine WMI oder OBJ-Funktion die ich mittels VB oder so ansteuern müsste.

Trotzdem danke für deine ausführlichen Tips und ein schönes Wochenende