Ich verwende Windows Server 2003 und habe eine geplante Aufgabe, die nicht abgeschlossen werden kann. Die Aufgabe ist so eingestellt, dass täglich um 15 Uhr ein Windows-Befehlsskript (.cmd) ausgeführt wird. Das Skript führt ein Programm aus, das einige Daten aus einer SQL Server-Datenbank extrahiert und diese Daten auf einen FTP-Server hochlädt.
Der in der Spalte "Letztes Ergebnis" des Ordners für geplante Aufgaben angezeigte Fehlercode lautet 0xc000013a. Eine schnelle Google-Suche führt zu dieser Microsoft-Support-Seite , auf der Folgendes angegeben ist: Der häufigste "C" -Fehlercode lautet "0xC000013A: Die Anwendung wurde aufgrund von STRG + C beendet".
Zum Zeitpunkt der Ausführung der Aufgabe ist niemand angemeldet, sodass niemand da ist, der STRG + C drückt. Ich bin nicht sicher, ob ich verstehe, was hier in der Microsoft-Dokumentation gesagt wird.
Ich habe die rudimentären Dinge überprüft - die geplante Aufgabe ist aktiviert, soll jeden Tag ausgeführt werden und auf eine Datei verweisen, die an einem gültigen Speicherort vorhanden ist. Interessanterweise wird die Aufgabe erfolgreich abgeschlossen, wenn ich diese Aufgabe manuell ausführe (entweder durch Ausführen des .cmd-Skripts über die Befehlszeile oder durch Klicken mit der rechten Maustaste auf die Aufgabe und Klicken auf "Ausführen").
Was bedeutet dieser Fehlercode und wie kann ich diese Aufgabe ausführen, wenn ich nicht da bin, um sie zu erzwingen?
quelle
exit 0
. B. ). Wenn es immer noch fehlschlägt, schlägt es von selbst fehl. Wenn nicht, war es nur ein gefälschter Exit-Code, der vom Taskplaner falsch interpretiert wurde.Antworten:
Fehlerbehebung bei geplanten Skripten:
Wenn Sie dies noch nicht getan haben, überprüfen Sie die Protokolldatei für geplante Aufgaben in der GUI unter Erweitert > Protokoll anzeigen . Durchsuchen Sie die Datei nach "
***
", um die neuesten Einträge zu finden. Möglicherweise werden zusätzliche Fehlerinformationen angezeigt.Definieren Sie eine Protokolldatei, um die Ausgabe zu erfassen, und senden Sie dort sowohl Standardausgang als auch Standardfehler. Ändern Sie jedes Echo AUS in Echo EIN , um sicherzustellen, dass Sie keine Fehlermeldungen unterdrücken.
Wenn Ihr Skript beispielsweise aufgerufen wird,
ftp.data.cmd
sieht Ihre geplante Aufgabe möglicherweise folgendermaßen aus:cmd /c ftp.data.cmd >> ftp.data.log 2>&1
Hängt das Drehbuch? Möglicherweise beendet der Taskplaner das Skript (daher der STRG + C-Fehlercode) nach einem bestimmten Zeitraum. Fügen Sie einige davon an strategischen Punkten in Ihrem Scipt hinzu.
echo %DATE% %TIME%
Sind Sie sicher, dass das Konto, auf dem das Skript ausgeführt wird, Berechtigungen / Zugriff auf alles im Skript hat?
Wenn Sie keine Freude haben, führen Sie diesen Befehl aus und veröffentlichen Sie die Ausgabe hier. Vielleicht können wir mit der Planung beginnen.
schtasks /query /v /fo LIST /s YOURSERVER
quelle
Ich kann die Frage nicht direkt beantworten, da ich nicht genau weiß, was die Fehlermeldung bedeutet (und daher auch nicht, wie sie behoben werden kann), aber wenn ich versuchen würde, sie zu beheben, würde ich einer Protokolldatei unter ein paar Schreibvorgänge hinzufügen Strategische Punkte im Skript und dann nach der geplanten Zeit sehen Sie, welcher Checkpoint zuletzt ausgeführt wird.
Mein Verdacht wäre, dass etwas aufgrund der Anmeldeinformationen, unter denen das Skript ausgeführt wird, fehlschlägt oder dass etwas im Skript einen angemeldeten Benutzer benötigt. Wenn Sie eingrenzen, wo im Skript Fehler auftreten, können Sie möglicherweise den "beleidigenden" Code finden.
quelle
Mir ist klar, dass dies ein alter Beitrag ist, aber sie sind sehr hilfreich bei der Suche nach Lösungen, und vielleicht kann das, was ich gefunden habe, auch hilfreich sein. Ich habe WinSCP unter Windows Server 2003 zum Hochladen auf einen FTP-Server verwendet und die gleiche Fehlermeldung erhalten, und die Datei SchedLgU.txt hat im Abschnitt "Aufgabe beenden, wenn sie für Folgendes bereitgestellt wird" auf nicht genügend Zeit hingewiesen, obwohl ich die Aufgabe angegeben habe viel Zeit zum Hochladen.
Im Task-Manager konnte ich feststellen, dass WinSCP.exe nicht gelöscht wurde und ich Tonnen von Prozessen in der Liste hatte. Daher habe ich eine Batch-Datei (taskkill / f / im winscp.exe) erstellt, um alle geöffneten Prozesse und mich zu beenden Lassen Sie diese Batch-Datei vor dem WinSCP ausführen und sie funktioniert jetzt einwandfrei.
quelle
Ich bin heute auf einem Remote-Server darauf gestoßen, und die Lösung bestand darin, die Ausführungseinstellung von "Nur ausführen, wenn der Benutzer angemeldet ist" in "Ausführen, ob der Benutzer angemeldet ist oder nicht" zu ändern.
Mit "Nur ausführen, wenn der Benutzer angemeldet ist" startet die Aufgabe ein Befehlsfenster, das geschlossen wurde, als meine Remotedesktopsitzung abgelaufen ist. Mit "Ausführen, ob der Benutzer angemeldet ist oder nicht" wird während der Ausführung der Aufgabe kein Fenster angezeigt, sodass die Ausführung nicht beendet wird, wenn meine Remotedesktopsitzung endet.
quelle
Ähnlich wie bei der Antwort von cori würde ich empfehlen, dass Sie überprüfen, als wen die geplante Aufgabe ausgeführt werden soll, da dieser Fehler aufgetreten ist, wenn das Benutzerkonto, auf dem die Aufgabe ausgeführt wird, nicht über dieselben Berechtigungen verfügt wie der angemeldete Benutzer
quelle
Wenn dies zuvor ausgeführt wurde, kann möglicherweise ein Zustand wie ein Netzwerkausfall oder ein Problem auf einem anderen Host den Fehler erklären.
quelle
Ich hatte den gleichen Fehler und das lag daran, dass die von mir ausgeführte Batchdatei zum Löschen einiger Dateien mit dem Befehl DEL aufforderte. Da kein Benutzer auf den Stapelverarbeitungsvorgang mit J / N antworten kann, wird die geplante Aufgabe beendet. Die folgende Meldung wurde in meinem Protokoll für geplante Aufgaben gefunden: "Die Aufgabe wurde beendet. Diese Aktion wurde entweder von einem Administrator oder vom Taskplaner-Dienst initiiert (da beispielsweise der Computer jetzt nicht inaktiv ist)." Ich empfehle, die Aufgabe manuell an der Eingabeaufforderung auszuführen, um festzustellen, wo sie angehalten wird, oder um eine Benutzerinteraktion zu veranlassen. Korrigieren Sie sie, und Ihre Aufgabe wird einwandfrei ausgeführt.
quelle
Wenn Sie versuchen, das Programm unter Task Scheduler-Steuerung auszuführen, gibt das System.Environment.CurrentDirectory C: \ Windows \ System32 zurück, NICHT dort, wo sich Ihre ausführbare Datei befindet. Dieser Fehler kann ein Fehler sein, bei dem die Datei nicht gefunden wurde. Ich habe versucht, mich in einem Unterverzeichnis anzumelden, das im System32-Baum nicht vorhanden war.
quelle
Bei meinen Skripten ist das klar. Es kommt vor, dass ich am Ende der Batch-Datei eine "Pause" habe und die geplante Aufgabe auf 20 Minuten begrenzt ist. Wenn der Benutzer anwesend ist, kann hi den Ablauf des Jobs sehen. Wenn dies nicht der Fall ist, wird die Batchdatei nach 20 Minuten durch eine geplante Aufgabe beendet. Dies verursacht 0xc000013a und es ist in Ordnung.
quelle
Ich hatte das gleiche Problem und habe es behoben, indem ich den Trigger von "Beim Systemstart" auf "Bei Anmeldung" geändert habe.
quelle
hatte das gleiche Problem .. behoben durch Spielen mit Benutzer, der registriert ist, um die geplante Aufgabe auszuführen. Am Ende war das Ändern der Domain die Antwort.
quelle