Windows Server Aufgabenplanung startet Batch nicht

HuBaer

Ensign
Registriert
Aug. 2006
Beiträge
177
Hallo zusammen,

wir haben immer wieder Probleme mit der Aufgabenplanung bei unserem Windows Server. Es soll beim Systemstart eine Batch ausgeführt werden. Dies geschieht aber nicht. Ich habe dazu einige Screenshots angehängt. Startet man die Batch manuell, so wird alles darin korrekt ausgeführt. ich habe eine andere Aufgabe noch hinterlegt, welche jeden Tag um 5 Uhr eine Batch startet (auch auf einem Netzlaufwerk), diese funktioniert einwandfrei.

Was mache ich falsch?

Danke und Grüße
 

Anhänge

  • 4.JPG
    4.JPG
    62,9 KB · Aufrufe: 2.101
  • 3.JPG
    3.JPG
    38,4 KB · Aufrufe: 2.025
  • 2.JPG
    2.JPG
    26,1 KB · Aufrufe: 1.774
  • 1.JPG
    1.JPG
    64,2 KB · Aufrufe: 1.755
  • 5.JPG
    5.JPG
    53,5 KB · Aufrufe: 1.785
  • 6.JPG
    6.JPG
    56 KB · Aufrufe: 1.640
  • 7.JPG
    7.JPG
    15,2 KB · Aufrufe: 1.822
a) den Batch mal mit CMD.EXE /C [pfad] starten
b) auf dem Share wo die Batch liegt hat jedermann Leserechte? der Task wird mit dem SystemBenutzer ausgeführt
c) ggf. die Batch mal zum Test lokal ablegen
 
Dann mach doch auch noch einen Screenshot davon der Aktion und trag auf jeden Fall in das Feld "Starten in" etwas ein auch wenn da optional steht.
 
XN04113 schrieb:
a) den Batch mal mit CMD.EXE /C [pfad] starten
b) auf dem Share wo die Batch liegt hat jedermann Leserechte? der Task wird mit dem SystemBenutzer ausgeführt
c) ggf. die Batch mal zum Test lokal ablegen

zu a) Bereits versucht
zu b) Jeder hat Vollzugriff, der Task wird vom Adminuser ausgeführt
zu c) Funktioniert auch nicht


Masamune2 schrieb:
Dann mach doch auch noch einen Screenshot davon der Aktion und trag auf jeden Fall in das Feld "Starten in" etwas ein auch wenn da optional steht.

In Starten in habe ich auch noch das Arbeitsverzeichnis eingetragen, das hat auch nichts gebracht.

Ich habe auf dem gleichen Netzlaufwerk eine andere Batch-Datei , diese wird einwandfrei ausgeführt.
 
In deinem letzten Screenshot ist zu sehen, dass die Aufgabe gerade ausgeführt ist.

Das Starten der Aufgabe scheint ja zu funktionieren.

Hast du die Aufgabe bezogen auf diesen Screenshot ( der letzte ist das ) manuell ausgeführt
oder war das ein automatischer Start der Aufgabe beim Systemstart?

Werden in der Batch-Datei Unterprogramme ( z.B. *.exe-Files ) aufgerufen,
die der Server direkt ( ohne absolute Pfadangabe ) ausführen kann?

Falls die Unterprogramme ohne Pfadangabe aufgerufen werden,
dann müssen die Verzeichnisse, in denen diese *.exe-Files liegen,
in die PATH-Variable des Servers eingepflegt werden.

Ansonsten kannst du natürlich die Unterprogramme per absolutem Pfad angeben.

Der Server muss natürlich Lesezugriff auf diesen Pfad ( inkl. *.exe-File(s) ) haben.

Gruß, Datax
 
Die Meldung "wird momentan augeführt", bezogen auf den letzten Screenshot, kommt von einem automatischen Start der Aufgabe beim Systemstart. Sie ist auch nach mehreren Tagen noch so drin.

In der Batch wird ein Unterprogramm aufgerufen, allerdings mit absoutem Pfad. Der Server hat Zugriff auf den Pfad bzw. die Aufgabe wird vom Domänen-Admin ausgeführt.

In der Batch ist folgendes drin (schematisch):

start "C:\Program Files\nodejs\node.exe" \\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js
pause

Liegt es evtl. an der JS-Datei? Habe diese aber schon mal in der GPO testweise als vertraulich eingetippt.

Die Batch mit cmd.exe zu starten hat wie gesagt leider auch nicht funktioniert.
 
eine CMD mit pause drinnen wird auch nie beendet werden außer Du hast dem Taskscheduler erlaubt sie nach Zeit abzubrechen
ersteller doch erst mal eine einfache CMD und teste damit
@Echo OFF
MD C:\Temp
ECHO Max Mustermann > C:\Temp\Test.txt
EXIT /B 0
 
Und warum trägst Du "C:\Program Files\nodejs\node.exe" nicht ins Feld "Programm/Script" und "\\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js" ins Feld "Argumente" ein? Dann wirds doch auch ausgeführt. Für einen einfachen Programmstart mit Parametern brauchs wirklich keinen Batch.
 
XN04113 schrieb:
eine CMD mit pause drinnen wird auch nie beendet werden außer Du hast dem Taskscheduler erlaubt sie nach Zeit abzubrechen
ersteller doch erst mal eine einfache CMD und teste damit
@Echo OFF
MD C:\Temp
ECHO Max Mustermann > C:\Temp\Test.txt
EXIT /B 0

Habe ich bereits versucht. Die Batch an sich wird ausgeführt.
Ergänzung ()

areiland schrieb:
Und warum trägst Du "C:\Program Files\nodejs\node.exe" nicht ins Feld "Programm/Script" und "\\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js" ins Feld "Argumente" ein? Dann wirds doch auch ausgeführt. Für einen einfachen Programmstart mit Parametern brauchs wirklich keinen Batch.

...weil es leider auch nicht funktioniert. In den Ereignissen erscheint zwar dann zum Schluss der Eintrag "Aufgabe abgeschlossen", aber unter "Ergebnis der letzten Ausführung" steht der Fehlercode 0x1.

Wie gesagt, tippe ich den Code zum starten von Node mit der JS-Datei als Parameter händisch in ein CMD oder starte ich eine Batch händisch, funktionierts - über die Aufgabenplanung nicht.
 
Zuletzt bearbeitet:
was mich wieder zu dem Punkt bringt, Rechte des Users der den Task startet sind anders
 
Hast du denn schon mal überprüft,
ob denn nach Abarbeitung der Aufgabe das richtige Ergebnis bei rauskommt?

Nur auf den Fehlercode "0x1" zu schauen ist vielleicht an der Stelle nicht so hilfreich.

Überprüf' doch mal manuell,
ob nach Ausführung der Aufgabe genau das Gleiche gemacht wurde wie wenn du das Programm
manuell per CMD ausführst.

Der Fehlercode "0x1" weist laut unten stehendem Link darauf hin,
das bei der Abarbeitung der Aufgabe beispielsweise eine Ausgabe ( in einem Fenster ) nicht möglich war.

Bei der Abarbeitung einer Aufgabe über die Aufgabenplanung hat das aufgerufene Programm keine Möglichkeit eine Ausgabe in einem Fenster zu machen.

Vielleicht reicht es schon die Ausgabe deines Programms in eine Datei umzulenken,
um den Fehlercode "0x1" verschwinden zu lassen.

Hier der Info-Link:
http://blog.christian-brix.de/2010/...i-automatischer-ausfuhrung-einer-batch-datei/

Wie oben bereits beschrieben würde ich an deiner Stelle erstmal schauen,
ob denn die Abarbeitung der Aufgabe nicht vielleicht bereits richtig funktioniert.

An den Berechtigungen kann es ja eigentlich auch nicht liegen,
da laut deinen Screenshots das Administratorkonto genutzt wird.

Gruß, Datax
 
Richtig, die Aufgabe wird vom Admin augeführt. Wenn ich die Batch per Doppelklick oder über die Eingabeaufforderung starte, funktioniert sie einwandrei. Ich befürchte, ich komme nicht mehr recht weiter über die Aufgabenplanung. Gibt es irgendeine Alternative, damit die Batch beim Rechnerstart gestartet wird? Hätte schon versucht, sie in den Autostart-Ordner zu tun, aber dann startet sie erst, nachdem sich auf dem Server wer anmeldet.
 
Sorry, dass ich das jetzt sagen muss,
aber ich finde, dass du hier teilweise die sehr guten Tips der Helfenden einfach so überspringst.

Bei "#7" hast du einen sehr guten Tip bekommen:

XN04113 schrieb:
eine CMD mit pause drinnen wird auch nie beendet werden außer Du hast dem Taskscheduler erlaubt sie nach Zeit abzubrechen
ersteller doch erst mal eine einfache CMD und teste damit
@Echo OFF
MD C:\Temp
ECHO Max Mustermann > C:\Temp\Test.txt
EXIT /B 0

Daraufhin hast du bei "#9" einfach folgendes geantwortet:

"Habe ich bereits versucht. Die Batch an sich wird ausgeführt."

Es ging bei "#7" nicht darum, ob die Aufgabe ausgeführt wird oder nicht.

Es ging um die korrekte Beendigung der Batch-Datei,
die ggf. nicht funktioniert, wenn man ein "PAUSE" am Ende der Batch-Datei eingefügt hat.

Hast du mal in deiner Batch-Datei das "PAUSE" entfernt und dann nochmal überprüft,
ob die Ausführung dieser Batch-Datei über die Aufgabenplanung ohne Fehlercode funktioniert oder
ob der Fehlercode weiterhin auftritt?

Gruß, Datax
 
Hallo zusammen,

und sorry, dass ich teilweise die Tipps ignoriert habe. Ich wollte nun einige Tage pausieren und frisch an die Sche rangehen.

- Zur Frage, was ist, wenn das PAUSE entfernt wird: Dann erscheint der Fehlercode 0x1, die Batch wird nicht korrekt ausgeführt

- Eine einfache Batch-Datei mit de Inhalt echo temp > \\NAS077BD9\Feuerwehr\Software\Lehrgangsmelder\testdatei.tmp funktioniert einwandfrei in der bestehenden Aufgabe und wird korrekt bei Systemstart ausgeführt. Daraus schließe ich, dass die Ausführung von Batches prinzipiell so in der Aufgabenplanung funktioniert und ich keinen Umweg über cmd.exe brauche (habe ich aber ebenso probiert). Ebenso schließe ich draus, dass der UNC-Name des Netzwerkordners funktioniert.

- Die richtige Batch-Datei mit dem aktuellen Inhalt "%programfiles%\nodejs\node.exe" \\NAS077BD9\Feuerwehr\Software\Lehrgangsmelder\TrainingAlert\PubSub.js wird manuell angeklickt mit angemeldetem Domänenadmin korrekt ausgeführt. Die Variablen habe ich aufgrund von verschiedenen gelesenen Tipps eingefügt, da die Laufwerksbuchstaben Benutzerabhängig sind. Aber wie gesagt, funktioniert manuell.
In der Aufgabe funktioniert die Batch nicht und erzeugt wieder einen Rückgabewert 0x1. Die Aufgabe wird in der Aufgabenplanung ebenso vom Domänenadmin (Passwort gebe ich mit) ausgeführt. Sie funktioniert nicht beim manuellen starten der AUFGABE und auch nicht beim Neustart des Servers

Grüße
 
Dann kann es nur noch am Inhalt der "PubSub.js"-Datei liegen,
der aus welchem Grund auch immer in Kombination mit der Aufgabenplanung zu dem Fehlercode "0x1" führt.

An der Stelle zitiere ich mich selbst ( Post #11 ):

Datax schrieb:
Hast du denn schon mal überprüft,
ob denn nach Abarbeitung der Aufgabe das richtige Ergebnis bei rauskommt?

Nur auf den Fehlercode "0x1" zu schauen ist vielleicht an der Stelle nicht so hilfreich.

Überprüf' doch mal manuell,
ob nach Ausführung der Aufgabe genau das Gleiche gemacht wurde wie wenn du das Programm
manuell per CMD ausführst.

Hast du also wirklich mal überprüft,
ob die "PubSub.js"-Datei korrekt bzw. nicht korrekt durch die "node.exe" abgearbeitet wurde?

Oder machst du das einfach nur am Fehlercode "0x1" fest?

Falls also wirklich nicht das Ergebnis bei der Ausführung durch die "node.exe" rauskommen sollte,
dann müsste man mehr über den Inhalt der "PubSub.js" wissen...

Gruß, Datax
 
Hallo,

die Abarbeitung geschieht nicht oder nicht korrekt, das habe ich bereits überprüft.

Ich werde versuchen, mehr herauszufinden.

Danke und Grüße
 
@HuBaer
Probiere doch bitte mal verschiedene Varationen der Batch durch:

Code:
"C:\Program Files\nodejs\node.exe" \\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js

oder

Code:
"C:\Program Files\nodejs\node.exe" "\\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js"

oder

Code:
cd "C:\Program Files\nodejs"
node.exe "\\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js"

oder

Code:
cd "C:\Program Files\nodejs"
start node.exe "\\NAS077BD9\Freigabe\Software\Ordner\TrainingAlert\PubSub.js"
 
DanielG1974 schrieb:
Auch ich scheitere gerade an der verflixten Aufgabenplanung unter Windows Server 2016 (1607).

Administrator.de - Aufgabenplanung führt Skript nicht aus

Gruß Daniel

Hallo Daniel.

Die Fehlermeldung "Snapshot error NTCOPY, line 1557" weist darauf hin,
dass "snapshot64.exe" aus welchen Gründen auch immer die Backup-Datei nicht anlegen kann.


Kann es sein, dass Laufwerk "Z:\ ein Netzlaufwerk ist?

Ich bekam obigen Fehlercode (Fehler 1557) ebenfalls bei meinen Tests,
wenn ich versuchte eine Partition in eine Backup-Datei auf einem eingebundenen Netzlaufwerk zu sichern.

Dieses Problem kannst du beheben,
indem du "snapshot64.exe" anweist das Netzlaufwerk eigenständig einzubinden.

Das sieht dann wie folgt aus:

snapshot64.exe HD1:* ZIELLAUFWERK:\Backup.sna --netuse:\\IP-DES-FREIGABE-RECHNERS\FREIGABENAME,ZIELLAUFWERK:,BENUTZERNAME,PASSWORT

Mit obiger Zeile führt "snapshot64.exe" dann ein Backup aller Partitionen der ersten Festplatte
in die Datei "Backup.sna" auf dem Laufwerk "ZIELLAUFWERK" durch (ZIELLAUFWERK ist bei dir dann vermutlich das betreffende Netzlaufwerk!?).

Mit dieser Zeile bekam ich dann den Fehlercode 1557 nicht mehr und das Backup wurde durchgeführt.

Trotz allem würde ich vor obiger Zeile noch folgenden Befehl schreiben,
damit das Netzlaufwerk auf jeden Fall nicht vor Aufruf obiger Zeile noch eingebunden ist.

"snapshot64.exe" soll ja das Netzlaufwerk eigenständig einbinden,
was nicht funktionieren würde, wenn es bereits eingebunden ist.

Dazu also folgende Zeile zuvor einfügen:

net use LAUFWERKSBUCHSTABE: /delete

Sieht dann insgesamt ungefähr (musst du noch entsprechend an deine Bedürfnisse anpassen) aus:

net use LAUFWERKSBUCHSTABE: /delete
snapshot64.exe HD1:* ZIELLAUFWERK:\Backup.sna --netuse:\\IP-DES-FREIGABE-RECHNERS\FREIGABENAME,ZIELLAUFWERK:,BENUTZERNAME,PASSWORT

Kannst du ja einfach mal bei dir testen,
bei mir hat es jedenfalls funktioniert.

Wäre ja super, wenn es bei dir auch funktionieren würde.

Übrigens gibt es noch den nützlichen Parameter "--LimitIORate:",
mit dem man die I/O-Datenmenge begrenzen kann (die Angabe hinter dem Doppelpunkt ist in MB anzugeben), die "snapshot64.exe" auf das betreffende Ziellaufwerk "rüberschaufelt".

Bei Netzlaufwerken, vor allem wenn es welche auf günstigen NAS-Systemen sind,
können (sehr) große Datenmengen in kurzer Zeit nicht ausreichend schnell auf die Platte schreiben,
wodurch es zu Abbrüchen bei der Durchführung des Backups kommt.

Um das zu verhindern kann man also per "--LimitIORate:10" beispielsweise die Datenmenge pro Sekunde
auf 10 MB begrenzen, die zum Netzlaufwerk "rübergeschoben" wird.

Gruß, Datax
 
Hallo.
Danke für Deine Antwort.
Der Fehlercode 1557 beruhte auf einem anderen Problem, den mir der Support von Tom Ehlert Software erläutert hat.
Ich hatte die GUI mit in den Parametern angegeben. Das funktioniert aber leider nicht.

Das Skript an sich läuft ja durch.
Ich habe lediglich das Problem, dass die Aufgabenplanung die Batch-Datei nicht ausführt.
Wie schon unter meinem Link zu sehen ist, habe ich mehrere Varianten ausprobiert.
Ich habe inzwischen auch probiert das Ganze über die PowerShell mit einem PowerShell-Skript zu starten.
Ebenfalls ohne Erfolg.
Das Problem besteht ebenfalls unter dem Small Business Server 2011, der der Domänencontroller dort ist.

Gruß Daniel
 
Zurück
Oben