it-swarm.com.de

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

Ich versuche, eine Batchdatei unter Windows 7 über den Taskplaner auszuführen. Ich kann die Batchdatei problemlos ausführen, wenn ich sie über den Befehl 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 vollständige Berechtigungen für die Batchdatei und den Ordner verfügt, in den die Datei geschrieben wird.

10
yhussain

AUFGABENPLAN: GEPLANTER BATCH-SCRIPT LÄUFT NICHT

Eigenschaften des Taskplaners. .

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

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

    • DeaktivierenRun only when user is logged on
    • CheckRun whether user is logged on or not
    • CheckRun with the highest privileges
  • 2. ConditionsStellen Sie auf der Registerkarte sicher, dass die folgenden Optionen , aktiviert oder deaktiviert sind wie in Druckbildschirm B gezeigt

    • CheckWake the computer to run this task
  • 3. ActionsKlicken Sie auf der Registerkarte auf .Edit, und stellen Sie sicher, dass Start in (optional) genau wie im folgenden Beispiel gezeigt eingestellt ist (. Setzen Sie KEINE doppelten Anführungszeichen) für die vollständiger Pfad, der zeigt, wo sich das Batch-Skript befindet [~ # ~] ohne [~ # ~] einen letzten Backslash "\" Druckbildschirm C


SICHERHEITSHINWEISE

  • Sobald Sie drückenOK ( 2. oben) Es sollte Sie auffordern, den Berechtigungsnachweis als auszuführen, und dieser Berechtigungsnachweis ist der Zugriff auf . EXECUTE die Batch-Datei, in der sie vorhanden ist, und sie benötigt auch Zugriff, um die von Ihnen ausgeschriebene Batch-Datei ausführen zu können.

  • 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 - und dass Sie Zugriff auf EXECUTE den Stapel haben und den Batch-Skriptprozess ausführen müssen Laufen und alle Befehle und Ressourcen, ect. es nutzt auch.

  • Es scheint, dass die Option Run whether user is logged on or not Sie MÜSSEN die Option Run with highest privileges Aktivieren, damit sie tatsächlich wie vom Taskplaner erwartet ausgeführt wird.

Fehlerprüfung

  • Wenn es ein Problem mit dem eigentlichen Batch-Skript gibt, der Windows Task Scheduler es jedoch tatsächlich ausführt, um es auszuführen, aber die Batch-Skript-Logik ausfällt usw., aus welchem ​​Grund auch immer, das Der Taskplaner kann diesen Fehler auf dieser Ebene möglicherweise nicht sehen. Aus seiner Sicht (standardmäßig meistens) führt es die Batch-Datei aus, solange es sie ausführen kann und Zugriff darauf hat. Die Aufgabe wird erfolgreich ausgeführt.

  • Fügen Sie der Batch-Skript-Logik die Fehlerprüfung oder der Protokollierung hinzu, um zu fangen (oder Beheben von ) Problemen auf dieser Ebene, einschließlich der Sicherstellung, dass der Sicherheitskontext, den der Batch-Scheduler ausführt, über den entsprechenden Zugriff auf Befehle, Ressourcen usw. verfügt, unter denen das Batch-Skript ausgeführt wird.


Überlegungen zu Gruppenrichtlinien

GRUPPENPOLITIK PRÜFEN UND ALS BATCH-JOB-ERLAUBNIS ANMELDEN

Antwort: Unter Windows wird dieses Privileg durch die lokale oder Domänensicherheit gewährt Politik. Führen Sie dazu die folgenden Schritte aus, indem Sie die lokale Sicherheitsrichtlinie verwenden.

  1. Öffnen Sie in der Systemsteuerung Verwaltung und dann Lokale Sicherheitsrichtlinie .
  2. Öffnen Sie unter Sicherheitseinstellungen Lokale Richtlinien und markieren Sie Zuweisung von Benutzerrechten .
  3. Suchen Melden Sie sich als Stapeljob an . Ö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 zum Vornehmen von Änderungen an der Domänensicherheitsrichtlinie auf einem Domänencontroller das Dienstprogramm für die Domänensicherheitsrichtlinie in der Systemsteuerung .


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

Wenn Ihr Skript auf ein zugeordnetes Netzwerklaufwerk verweist, Sie jedoch möchten, dass es Run whether the user is logged on or not Ist, ist die Laufwerkszuordnung in diesem Kontext möglicherweise nicht für den Stapelverarbeitungsprozess vorhanden, um die erwarteten Ergebnisse zu erzielen.

Verwenden Sie nach Möglichkeit UNC Pfade in Ihrer Batch-Skriptlogik anstelle eines zugeordneten Laufwerksbuchstabens, um Probleme zu vermeiden. Andernfalls müssen Sie möglicherweise zu Beginn des Stapelprozesses PUSHD \\ServerName\ShareName Und am Ende des Stapelprozesses POPD verwenden. Sie können das Laufwerk zu Beginn des Stapelprozesses mit Net Use X: \\ServerName\ShareName Zuordnen und am Ende des Stapelprozesses das Laufwerk mit Net Use X: /DELETE Trennen.


ANDERE

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

  • Schauen Sie sich die geplanten Aufgaben an Settings Registerkarte und die als Stop the task if it runs longer than: aufgeführte Option. 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.

    (enter image description here

  • Von dem Triggers Registerkarte der geplanten Aufgabe, wenn Sie die auswählen Edit Stellen Sie sicher, dass Start: Uhrzeit und Datum einen Wert haben, der NICHT bereits übergeben wurde. Stellen Sie sicher, dass Datum und Uhrzeit auf den Wert von Future 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. Es wird jedoch weder von Task Scheduler ausgeführt, noch zeigt die Registerkarte Task Scheduler History dies an wird jemals ausgeführt (weil es nicht ist). 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.

    (enter image description here


DRUCKBILDSCHIRME

Druckbildschirm A

(enter image description here

Druckbildschirm B

(enter image description here

Druckbildschirm C

(enter image description here

20
Pimp Juice IT