Windows-Aufgabenplanung - per schtasks.exe einen Task erstellen und abfragen

  • Deine Idee ist gut! Zwar bin ich kein Anfänger, aber ich liebe Anfänger-einfache Funktionen. Eine weitere Idee wäre deshalb, die Create-Funktion zu überladen, oder noch einfacher, verschiedene Create-Funktionen zu erstellen. Zum Beispiel


    _TaskCreate_SimpleTask <-- Nur Adminrechte, Programm, Username und Passwort

    _TaskCreate_VerySimpleTask <-- Nur Adminrechte und Programm

    _TaskCreate_TimePlanTask <-- Umfangreiche Zeitplanung von minütlich, täglich, bis ...

    _TaskCreate_LogonTypeTask <-- Beim Booten, bei Anmeldung, bei Idle, ...

    Das hier sind nur aus dem Ärmel geschüttelte Ideen, es finden sich bestimmt sinnvollere. ;)

    Auf jeden Fall könnte man dadurch die Anzahl der jeweiligen Parameter auf ein viel erträglicheres Maß bringen! Es wären dann vielleicht 4 oder 5 Paramter nötig, was echt übersichtlich wäre. Vorallem der Datentyp der Parameter in der mega-langen Original-Funktion (siehe Posting #18) ist für mich ein Problem! "War das jetzt ein String beim 127ten oder beim 128ten Parameter? ... Mist, wieder von vorne zählen." :/

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    2 Mal editiert, zuletzt von Professor Bernd (24. August 2019 um 01:45)

  • Hallo!

    Ich finde das Thema hier sehr interessant, da ich doch öffter auch Tasks benötigte die etwas vom Standard abweichen. Um z.B.: Tasks erstellen zu können die die GUI nicht zulässt bin ich übergegangen mit die XLM-Files selber zu schreiben. Hört sich wilder an als es ist!

    Wäre das für Dich ein Weg? XLM-schreiben und dann mit schtasks /create /XML <meinTask.xml>.... zu importieren?

    lg

    Racer

  • XML Import/Export ist bereits angedacht :)

  • Hallo Racer, die Möglichkeiten der XML-Files habe ich vor kurzem auch entdeckt.

    Hier im Thread geht es ja um die schtasks.exe, deshalb dachte ich am Anfang, dass das nichts miteinander zu tun hätte. Nach dem Lesen von vielen, vielen verstreuten Infos habe ich gesehen, dass man die XML-Files auch mit der schtasks.exe handhaben kann. Also: Gute Sache! Danke für den Hinweis! :)

    Water hat geschrieben, dass der Import/Export bereits angedacht ist. Damit ist nicht die schtasks.exe gemeint, sondern water schreibt an einer neuen UDF mit COM-Objekten. Es gibt Infos und eine Umfrage dazu, die sehr interessant sind.

    Finden und abstimmen (wenn du willst) kannst du das hier: Neue, aktualisierte UDF für den Windows Task Scheduler?

    Gruß,

    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Hallo Bernd,

    etwa so wie Racer mache ich das auch.

    Ich erstelle mir den Task im Taskplaner und wenn er wie gewünscht funktioniert, exportiere ich den Task.

    Dann habe ich die .xml_Datei und diese kann man mit AutoIt, mit dem Befehl:

    ; Die Aufgabe für den verzögerten Start in die Aufgabenplanung importieren.

    RunWait(@ComSpec & " /c " & 'schtasks /Create /XML "' & .xml-Datei" & '"' & ' /TN "' & "Name des Task" & '"', _

    "", @SW_HIDE)

    If @error Then

    MsgBox(262144, "", "Beim Importieren der Aufgabe ist ein Fehler aufgetreten!")

    EndIf

    importeiren.

    Mfg:

    BigRox

  • Hallo!

    Ja, Water spielt in einer anderen Liga. Ich verwende seine AD-UDF, die ist einfach genial!

    Ich mag es persönlich lieber wenn alles in AutoIT ist und nicht das ich immer auf die externen Tools zurückgreifen muss. Mit dem Taskplaner geht es ja noch, da er in jeder Windows Version vorhanden ist. Schöner ist es auf jedenfall einen sauberen Code zu haben.

    Noch ein Tipp: Task mit der GUI erstellen, dann das XML mit z.B.: Notepad++ editiern. Hier kann man auch einstellen das ein Task z.B.: nach 1 Min. schon beendet werden soll, falls er scheitert oder das für 24 Stunden alle 5 Minuten der Task ausgeführt werden soll....also alles was die GUI nicht zulässt ;)

    lg

    Racer

  • Hallo Professor Bernd,

    das mit dem Aufruf über "@ComSpec" hat schon irgendetwas mit Gewohnheit zu tun.

    Ich habe das Importieren zuerst damit ausprobiert, da ich bisher solche Befehle schon immer über "@ComSpec" aufgerufen habeund da es damit auch sofort funktioniert hat, habe ich es so gelassen und nichts anders ausprobiert.

    Eventuell geht es auch ohne "@ComSpec", aber das müsste ich zuerst ausprobieren.

    MfG:

    BigRox

  • Ich mag es persönlich lieber wenn alles in AutoIT ist und nicht das ich immer auf die externen Tools zurückgreifen muss.

    Das sehe ich auch so. Im Gegensatz zu water bin ich kein Freund von COM (Component Object Model) und sehe es als externes Tool an (Client-Server-Modell), das ich nach Möglichkeit vermeide. Das ist jetzt nicht direkt auf die neuen Taskplaner-UDF bezogen, denn auf die freue ich mich sogar! Damit sind einfach Sachen möglich, die ansonsten nur schwer oder gar nicht erreicht werden können.

    Task mit der GUI erstellen, dann das XML mit z.B.: Notepad++ editiern. Hier kann man auch einstellen das ein Task z.B.: nach 1 Min. schon beendet werden soll, falls er scheitert

    Interessante Sache! Ich habs mir in der Taskplaner-GUI angesehen und verstehe, was du meinst. Danke für den Tipp.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Eventuell geht es auch ohne "@ComSpec", aber das müsste ich zuerst ausprobieren.

    Es geht auch ohne. 8o

    Mit ComSpec schaltest du nur eine zusätzliche Anwendung dazwischen.

    RunWait(@ComSpec & " /c " & 'schtasks /Create /XML "' & "MyTask 1.xml" & '"' & ' /TN "' & "MyTask 1" & '"', "", @SW_HIDE)


    Der direkte Aufruf ist zudem kürzer und übersichtlicher. Beispiel:

    RunWait('schtasks /Create /XML "MyTask 1.xml" /TN "MyTask 1"')

    .

    Edit: Aufruf nochmal verkürzt und ComSpec Gegenüberstellung hinzugefügt + Flüchtigkeitsfehler entfernt. ;)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    6 Mal editiert, zuletzt von Professor Bernd (27. August 2019 um 22:46)