Ausführen einer Batchdatei über den Taskplaner, ohne dass der Benutzer angemeldet ist

10

Ich versuche, eine Batchdatei unter Windows 7 über den Taskplaner auszuführen. Ich kann die Batchdatei problemlos ausführen, wenn ich sie an der Eingabeaufforderung ausführe.

Wenn ich es über den Taskplaner ausführe, um es nur auszuführen, wenn der Benutzer angemeldet ist, wird die Aufgabe ohne Probleme ausgeführt. Wenn es jedoch ausgeführt wird, wenn der Benutzer nicht angemeldet ist, sieht der Taskplaner so aus, als würde die Datei ausgeführt, aber es passiert nichts.

Ich habe versucht, die Batchdatei in nichts anderes als die folgende Zeile zu ändern, um sicherzustellen, dass dies nicht an der Batchdatei liegt:

echo "success" >> c:\temp\test.log

und das funktioniert nicht. Irgendwelche Ideen? Ich habe es mit den höchsten Berechtigungen und mit einem Administratorkonto ausgeführt, das über die vollständigen Berechtigungen für die Batchdatei und den Ordner verfügt, in den die Datei geschrieben wird.

yhussain
quelle
Mit welchem ​​Konto führen Sie die Aufgabe aus? Welche Auslöser haben Sie gesetzt?
Camilohe
Versuchen Sie, die Aufgabe als Systemdienstkonto auszuführen.
SamAndrew81

Antworten:

20

AUFGABENPLAN: GEPLANTER BATCH-SCRIPT LÄUFT NICHT

Eigenschaften des Taskplaners. . .

Von Windows Task Schedulerim Job Properties (siehe unten die meisten Screenshots) in der. . .

  • 1. General Stellen Sie auf der Registerkarte sicher, dass die folgenden Optionen wie in Druckbildschirm A gezeigt ausgewählt / aktiviert oder deaktiviert sind

    • Deaktivieren Sie Run only when user is logged on
    • Prüfen Run whether user is logged on or not
    • Prüfen Run with the highest privileges
  • 2. Conditions Stellen Sie auf der Registerkarte 2 sicher, dass die folgenden Optionen ausgewählt , aktiviert oder deaktiviert sind, wie in Druckbildschirm B gezeigt

    • Prüfen Wake the computer to run this task
  • 3. Actions Klicken Sie auf die Registerkarte, klicken Sie darauf Edit, und stellen Sie sicher, dass das Start in (optional)Feld wie im folgenden Beispiel gezeigt eingestellt ist ( setzen Sie KEINE doppelten Anführungszeichen), um den vollständigen Pfad anzuzeigen, der darauf verweist, wo sich das Stapelskript befindet, OHNE einen endgültigen Backslash " \". Druckbildschirm C.


SICHERHEITSHINWEISE

  • Sobald Sie OK( 2. oben) drücken, werden Sie aufgefordert, den Berechtigungsnachweis als auszuführen. Dieser Berechtigungsnachweis benötigt Zugriff auf EXECUTEdie Batchdatei, in der er vorhanden ist, und er muss auch Zugriff haben, um die Batchdatei auszuführen, die ausgeführt wird dass du ausgeschrieben hast.

  • Es ist möglicherweise am besten, ein statisches Dienst- / Proxy-Benutzerkonto für diesen Prozess einzurichten und dann seine Anmeldeinformationen zu verwenden, um den Prozess auszuführen. Sie müssen sicherstellen, dass das Kennwort sicher ist und niemals abläuft. Außerdem muss der Zugriff auf EXECUTEden Stapel erfolgen und ausgeführt werden, unabhängig davon, welcher Batch-Skriptprozess ausgeführt wird, sowie alle Befehle und Ressourcen usw. es nutzt auch.

  • Es scheint die Option zu sein, die Run whether user is logged on or notSie aktivieren MÜSSEN, Run with highest privilegesdamit sie tatsächlich wie vom Taskplaner erwartet ausgeführt wird.

Fehlerüberprüfung

  • Wenn es ein Problem mit dem eigentlichen Batch-Skript gibt, der Windows- Taskplaner es jedoch tatsächlich ausführt, um es auszuführen, die Logik des Batch-Skripts jedoch aus irgendeinem Grund ausfällt, wird dieser Fehler auf dieser Ebene möglicherweise vom Taskplaner nicht angezeigt. Aus seiner Sicht (standardmäßig meistens) führt es die Batchdatei aus, solange es sie ausführen kann und Zugriff darauf hat, und seine Arbeit erfolgreich ausgeführt wird.

  • Fügen Sie der Stapelskriptlogik eine Fehlerprüfung oder -protokollierung hinzu , um Probleme auf dieser Ebene zu erkennen (oder zu beheben ), einschließlich der Sicherstellung, dass der Sicherheitskontext, in dem der Stapelplaner sie ausführt, über den entsprechenden Zugriff auf Befehle, Ressourcen usw. verfügt, unter denen das Stapelskript ausgeführt wird.


Überlegungen zu Gruppenrichtlinien

PRÜFEN SIE DIE GRUPPENPOLITIK UND DIE ANMELDUNG ALS BATCH JOB-ERLAUBNIS

Antwort: Unter Windows wird dieses Privileg über die lokale oder Domänensicherheitsrichtlinie gewährt . Führen Sie dazu die folgenden Schritte aus, um die lokale Sicherheitsrichtlinie zu verwenden .

  1. Öffnen Sie in der Systemsteuerung Verwaltung und dann Lokale Sicherheitsrichtlinie .
  2. Öffnen Sie unter Sicherheitseinstellungen die lokalen Richtlinien und markieren Sie Benutzerzuweisung .
  3. Suchen Sie Anmelden als Stapeljob . Öffnen Sie die Eigenschaften und fügen Sie alle Benutzer hinzu, die dieses Recht benötigen.
  4. Wenn Sie fertig sind, speichern Sie Ihre Änderungen und schließen Sie das Fenster Lokale Sicherheitseinstellungen .

Ihre Änderungen sollten sofort wirksam werden. Verwenden Sie das Dienstprogramm für die Domänensicherheitsrichtlinie in der Systemsteuerung, um Änderungen an der Domänensicherheitsrichtlinie auf einem Domänencontroller vorzunehmen


Batch-Skriptlogik mit zugeordneten Laufwerken oder vollständigem UNC-Pfad und Problemen. . .

Wenn Ihr Skript auf ein zugeordnetes Netzwerklaufwerk verweist, dies jedoch gewünscht wird Run whether the user is logged on or not, ist die Laufwerkszuordnung in diesem Kontext möglicherweise nicht für den Stapelverarbeitungsprozess vorhanden, um die erwarteten Aktionen auszuführen.

Verwenden Sie nach Möglichkeit UNCPfade in Ihrer Batch-Skriptlogik anstelle eines zugeordneten Laufwerksbuchstabens, um Probleme zu vermeiden. Andernfalls müssen Sie möglicherweise zu PUSHD \\ServerName\ShareNameBeginn des Batch-Prozesses und dann POPDam Ende des Batch-Prozesses verwenden. Sie können das Laufwerk NET USE X: \\ServerName\ShareNamezu Beginn des Stapelprozesses zuordnen und dann das Laufwerk NET USE X: /DELETEam Ende des Stapelprozesses trennen .


ANDERE

  • MS HOTFIX (KB977353): Das Einstellungselement "Gruppenrichtlinien-Sofortaufgabe" wird nicht auf einem Clientcomputer ausgeführt, auf dem Windows 7 oder Windows Server 2008 R2 ausgeführt wird

  • Sehen Sie sich die SettingsRegisterkarte der geplanten Aufgabe und die Option an, die als aufgeführt ist Stop the task if it runs longer than:. Wenn diese Option aktiviert ist und der Zeitraum kürzer als ein ausgeführtes Skript ist, wird sie vom Taskplaner vorzeitig beendet, sodass Sie möglicherweise nicht die erwarteten Ergebnisse erhalten. Dies ist etwas anderes zu überprüfen, wenn Sie Fehler beheben, nur für den Fall.

    Geben Sie hier die Bildbeschreibung ein

  • TriggersStellen Sie auf der Registerkarte der geplanten Aufgabe Editsicher, dass Start:Uhrzeit und Datum einen Wert haben, der NICHT bereits übergeben wurde, wenn Sie die Option auswählen . Stellen Sie sicher, dass Datum und Uhrzeit auf den Wert eines zukünftigen Werts eingestellt sind . Andernfalls stellen Sie möglicherweise fest, dass der Job angibt, dass die Ausführung zum nächsten geplanten Zeitpunkt wie erwartet geplant ist. Allerdings ist es nicht ausgeführt werden soll Task Scheduler noch ist der Taskplaner History Registerkarte zeigt , dass es überhaupt ausgeführt wird (weil es nicht). Bearbeiten Sie einfach den Auslöser und aktualisieren Sie ihn mit einem zukünftigen Datum und / oder einer zukünftigen Uhrzeit, um dieses Problem zu beheben, wenn es auftritt.

    Geben Sie hier die Bildbeschreibung ein


BILDSCHIRME DRUCKEN

Druckbildschirm A.

Geben Sie hier die Bildbeschreibung ein

Druckbildschirm B.

Geben Sie hier die Bildbeschreibung ein

Druckbildschirm C.

Geben Sie hier die Bildbeschreibung ein

Zuhälter Saft IT
quelle