it-swarm.com.de

Der Taskplaner kann die Batchdatei nicht öffnen, wenn festgelegt ist, ob der Benutzer angemeldet ist oder nicht

Betriebssystem: Windows Server 2008 R2 Enterprise

Ich kann den Taskplaner nicht dazu bringen, BAT-Dateien auszuführen, während ich abgemeldet bin. Ich habe eine Produktions-.bat-Datei, die ich verwenden möchte, aber für die Problembehandlung verwende ich C:\Users\Administrator\Desktop\test.bat

test.bat ist sehr einfach. Alles, was es enthält, ist: Taskkill/im notepad.exe

Es läuft erfolgreich von alleine. Wenn ich Notepad geöffnet habe und auf test.bat doppelklicke, blinkt das Cmd-Fenster und Notepad stirbt. Die .bat-Datei ist nicht das Problem.

Die Aufgabe, die ich im Taskplaner erstellt habe, ist "Test Taskkill" (ohne Anführungszeichen). Ich kann seinen Speicherort in Windows Explorer sehen: C:\Windows\System32\Tasks\Test taskkill

Wenn die Aufgabe so eingestellt ist, dass sie nur ausgeführt wird, wenn der Benutzer angemeldet ist, funktioniert die Aufgabe. Mit dieser Einstellung kann ich mit der rechten Maustaste darauf klicken> ausführen, und ich bekomme dasselbe Verhalten, als würde ich auf die .bat-Datei doppelklicken. Das heißt, die Aufgabe ist korrekt konfiguriert.

Wenn ich es so eingestellt habe, dass der Benutzer angemeldet ist oder nicht, passiert beim Klicken mit der rechten Maustaste nichts, was offensichtlich ist. Der Job wurde als erfolgreich in der Historie ausgeführt, Notepad bleibt jedoch erhalten. Ich weiß, dass ich die richtigen Anmeldeinformationen für das Konto verwende, das ich für die Ausführung der Aufgabe konfiguriere. Dieses Konto ist der lokale Administrator.

Dieses Problem scheint ähnlich zu sein wie andere, die in der Vergangenheit aufgetreten sind:

Ausführen einer .bat-Datei in geplanter Task

http://social.technet.Microsoft.com/Forums/windowsserver/en-US/d47d116e-10b9-44f0-9a30-7406c86c2fbe/scheduled-task-wont-run-bat-file?forum=winservermanager

Der Thread in der zweiten Verknüpfung schien ein identisches Problem für viele Benutzer zu lösen, mit dem Vorschlag, dass das Konto, das zur Ausführung der Aufgabe verwendet wurde, explizite Erlaubnis für die .bat-Datei und alle Dateien, die die .bat-Datei ändert, erforderlich ist. Dies war sehr vielversprechend (wenn eine lästige Anforderung). Ich habe jedoch den folgenden Bereichen explizite Berechtigungen für den lokalen Administrator bestätigt oder zugewiesen, und ich bin immer noch nicht erfolgreich:

  • C:\Benutzer\Administrator\Desktop \
  • C:\Benutzer\Administrator\Desktop\test.bat
  • C:\Windows\System32\Tasks \
  • C:\Windows\System32\Tasks\Test Taskkill

Darüber hinaus habe ich bestätigt, dass sich das lokale Administratorkonto in der lokalen Administratorgruppe befindet.

Verpassen ich einige andere Berechtigungen, die gesetzt werden müssen? Gibt es noch etwas, das ich mir ansehen sollte? Vielen Dank!

13
MasterOfNone

Ich habe dieses Problem mit Hilfe eines Auftragnehmers gelöst, der andere Aufgaben für meine Einrichtung erledigte.

Im Eigenschaftenfenster für die Aufgabe, auf der Registerkarte Aktion, beim Erstellen oder Bearbeiten der Aktion, mit der die Batchdatei geöffnet wird (in meinem Fall test.bat), befindet sich das Feld "Programm/Skript:" und es ist auch ein Start vorhanden in (optional): "Feld. Ich hatte zuvor das Feld "Programm/Skript:" mit dem vollständigen Pfad zur Datei, der mit dem Dateinamen endet, und ich hatte das Feld "Start in (optional):" null. Diese Konfiguration scheint ohne Probleme zu funktionieren, wenn die Aufgabe auf der Registerkarte Allgemein des Eigenschaftenfensters der Aufgabe auf "Nur ausführen, wenn Benutzer angemeldet ist" eingestellt ist. Diese Konfiguration funktioniert jedoch nicht, wenn die Aufgabe auf "Ausführen, ob Benutzer angemeldet ist oder nicht" eingestellt ist.

Um das Problem zu beheben, habe ich die Aktion so geändert, dass das Feld "Programm/Skript:" nur den Dateinamen und nicht den Dateipfad enthält. Ich gebe den Dateipfad in das Feld "Start in (optional):" ein. Diese Konfiguration funktioniert, wenn die Task auf "Nur ausführen, wenn Benutzer angemeldet ist" eingestellt ist! Ich habe getestet, ob die Task auf einem Trigger ausgeführt wird und auch manuell ausgeführt wird.

17
MasterOfNone

Nicht sicher, ob das hilft. Mein Problem war die Verwendung eines interaktiven Programms (insbesondere Excel).

Durch das Erstellen der 2 leeren Ordner (Desktop) wurde das Problem gelöst. Erstellen Sie beide, auch wenn Sie x64 ausführen.

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

Ich debugierte meinen Code und stellte fest, dass der Code in dieser Zeile beendet wurde

ExcelFile excelFile = new ExcelFile(directory, filename);

Ich habe diese Lösung irgendwo gelesen und kann die URL jetzt nicht finden.

1

Ich hatte ein ähnliches Problem, aber es hing damit zusammen, dass im Pfad meiner ausführbaren Batchdatei ein Leerzeichen vorhanden war. Ich habe den Platz entfernt und jetzt funktioniert es gut.

1
FerFig

Was für mich Arbeit war, sicherzustellen, dass der Pfad verfügbar ist.

ich verwendete Net Use Z:\Computername\Ordner/persistent: Ja 

dann die xxcopy/s/c/d/e/i/y D: *. * z:\BackupBat 

Ich merke, dass alle meine anderen .bat funktionieren, nur der mit dem Hinweis auf einen Kartenordner war derjenige, der nicht ausgeführt wurde, so dass das Problem das Problem sein muss. Mit dieser Änderung läuft die Bat-Datei gut.

1
Janet Batlle

Versuchen Sie dies auch ..

Behebung der Sicherheitsrichtlinie "Ausführen, ob Benutzer angemeldet ist oder nicht" durch Festlegen der Sicherheitsrichtlinie "Als Stapeljob anmelden".

Hier finden Sie Details zur Einstellung… https://danblee.com/log-on-as-batch-job-rights-for-task-scheduler/

Sie können einen anderen Ansatz wählen, aber hier sind die Schritte: 1) Ich habe die Standard-Domänengruppenrichtlinie aktualisiert, indem ich mein Administratorkonto (mit dem ich die Aufgabe auslöse) zur Sicherheitsrichtlinie "Als Stapeljob anmelden" hinzugefügt habe. (Obwohl die ADMIN-Gruppe aufgeführt ist und ich ein Administratorkonto verwende) 2) Ich habe GPUPDATE auf dem Client erzwungen 3) Den Client neu gestartet 4) Die Richtlinie auf dem Client überprüft, um sicherzustellen, dass sie vom DC 5) Legen Sie die Aufgabe "Ausführen, ob Benutzer angemeldet ist oder nicht" fest. 6) Führen Sie die Aufgabe bei Bedarf aus, und es wurde eine PDF Datei erstellt. 7) Abgemeldet und die Aufgabe zum geplanten Zeitpunkt ausgeführt. Es wurde eine PDF Datei erstellt.

0
San

Folgendes zu überprüfen hat sich für mich bewährt:

1) Die Option "Ausführen, wenn Benutzer nicht angemeldet ist" in Taskplaner funktioniert nicht für interaktive Programme. Beispiel Notizblock, Uhr. Aufgaben werden nicht interaktiv ausgeführt. Stellen Sie sicher, dass Ihr Programm keine interaktiven Aktionen erfordert.

2) Aktivieren Sie das Kontrollkästchen "Start in (optional)", wenn Ihr Programmpfad nicht einer der Systempfade ist. Sie müssen besser Ihren Programmpfad hinzufügen. Geben Sie im "Programm/Skript" nur den Namen des Programms ein und geben Sie unter "Start in" den Pfad Ihres Skripts ein.

3) Das Benutzerkonto, das Sie für Ihr Programm eingerichtet haben, muss die Berechtigung haben, nicht nur Ihr Programm selbst auszuführen, sondern auch alle anderen Programme, die sich auf Ihr Programm beziehen.

Hier ist ein Beispielprogramm: 

Auf C:\myprogram\folderOne\test.cmd

date /t >> c:\Temp\testAuto.log
date /t >> c:\temp\testAuto.log
echo ----->> c:\temp\testAuto.log
cls
exit

-Erstellen Sie eine Aufgabe und wählen Sie Allgemein> Sicherheitsoptionen "Ausführen, ob Benutzer angemeldet ist oder nicht" - Geben Sie Action> Program/script ein: test.cmd Bei "Start in" C:\meinprogram\folderOne - Run werden die cmd-Fenster möglicherweise geöffnet und sehr schnell geschlossen. Die Datei testAuto.log sollte sich im Ordner c:\tmp befinden.

0
mercedes

Möglicherweise haben Sie keine Erlaubnis. Wenn ich mit dem gleichen Problem konfrontiert bin, habe ich die Lösung wie folgt gefunden. Klicken Sie mit der rechten Maustaste auf Ihre Aufgabe als Eigenschaften. Klicken Sie in den Eigenschaften auf die Registerkarte Allgemein, klicken Sie auf 'Benutzergruppe oder Benutzer' und wählen Sie den entsprechenden Benutzer aus.

0
Brijesh Rana