Aufgabenplanung - Skripts ausführen - Server 2012 R2
Hallo,
ich habe ein Problem mit der Aufgabenplanung auf einem Server 2012 R2.
Ich bin als Domain-Admin angemeldet und erstelle eine Aufgabe, wo ein CMD-Skript ausgeführt werden soll.
Der Task soll unabhängig von der Benutzeranmeldung und mit höchsten Privilegien ausgeführt werden.
Das Skript startet aber nur, wenn diese beiden Optionen nicht aktiv sind.
Ich habe das Testweise auch mit Notepad.exe versucht, klappt auch nicht.
Die Benutzer habe ich bereits auf SYSTEM, Lokaler Dienst, Lokaler Admin und Domain-Admin getestet.
Den Taskplaner habe ich auch bereits als Administrator ausgeführt.
Es wird das Skript als Parameter von CMD.exe ausgeführt. Auch wenn ich es direkt ausführen möchte, klappt es nur mit den Standard-Einstellungen.
Ist das eine Eigenheit von Server 2012 R2?
Oder warum kann man das Skript nicht so ausführen?
Bitte um kurze Info.
Danke
LG
Lukas
ich habe ein Problem mit der Aufgabenplanung auf einem Server 2012 R2.
Ich bin als Domain-Admin angemeldet und erstelle eine Aufgabe, wo ein CMD-Skript ausgeführt werden soll.
Der Task soll unabhängig von der Benutzeranmeldung und mit höchsten Privilegien ausgeführt werden.
Das Skript startet aber nur, wenn diese beiden Optionen nicht aktiv sind.
Ich habe das Testweise auch mit Notepad.exe versucht, klappt auch nicht.
Die Benutzer habe ich bereits auf SYSTEM, Lokaler Dienst, Lokaler Admin und Domain-Admin getestet.
Den Taskplaner habe ich auch bereits als Administrator ausgeführt.
Es wird das Skript als Parameter von CMD.exe ausgeführt. Auch wenn ich es direkt ausführen möchte, klappt es nur mit den Standard-Einstellungen.
Ist das eine Eigenheit von Server 2012 R2?
Oder warum kann man das Skript nicht so ausführen?
Bitte um kurze Info.
Danke
LG
Lukas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 301184
Url: https://administrator.de/contentid/301184
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
22 Kommentare
Neuester Kommentar
Ich kenne dieses Problem und konnte es bisher nicht lösen.
Mein workaround ist das Script als Administrator auszuführen, ich melde den Administrator nach einem reboot einmal an und trenne seine Sitzung nur.
Auch ich wäre um eine Lösung dankbar.
Ich werde mich damit nochmal auseinandersetzen wenn ich etwas mehr Zeit habe.
Mein workaround ist das Script als Administrator auszuführen, ich melde den Administrator nach einem reboot einmal an und trenne seine Sitzung nur.
Auch ich wäre um eine Lösung dankbar.
Ich werde mich damit nochmal auseinandersetzen wenn ich etwas mehr Zeit habe.
Moin,
bastel mal ein
an das Ende deines Scriptes.
Darüber hinaus muss der Task mit höchsten Rechten ausgeführt werden. Das hast du schon mal richtig erkannt.
Ganz wichtig aber: Als Programm musst du C:\Windows\SysWOW64\cmd.exe angeben und als Parameter /c "C:\MeineBatch.cmd"
Gruß
bastel mal ein
exit /b 0
Darüber hinaus muss der Task mit höchsten Rechten ausgeführt werden. Das hast du schon mal richtig erkannt.
Ganz wichtig aber: Als Programm musst du C:\Windows\SysWOW64\cmd.exe angeben und als Parameter /c "C:\MeineBatch.cmd"
Gruß
Der Exit-Schalter ist nicht elementar - genau genommen für dich nicht einmal zwingend. Macht die ganze Sache nur "sauber". Richtig wäre es, wenn du den Wert auch ermittelst.
Das wird nicht funktionieren. Mach es wie ich geschrieben habe und hänge einfach deinen Parameter hinten an
c oder C spielt keine Rolle - den Leerschritt hatte ich in meinem Beispiel auch angegeben
Hallo Lukas,
Es wäre schön, wenn Du deinen Code oder einen Code-Schnipsel zur Verfügung stellst. Dann kann es besser analysiert werden. Hier etwas Licht für das Dunkle in dem sich wohl auch @MichaelW84 befindet.
Wird eine Aufgabenplanung erstellt, die ein Programm Batch/Powershell ausführen soll, dann wird dies stets aus dem System Ordner (%SystemRoot%\system32\) durchgeführt. Dies kann sehr einfach überprüft werden. Einfach eine Batchdatei und die Logdatei wo.txt auf C:\ erstellen mit folgendem Code:
Wird die Batchdatei direkt per Doppelklick auf C:\ ausgeführt erhält man eine Auflistung von C:\. Wird dasselbe Batchskript über die Aufgabenplanung ausgeführt erhält man eine Auflistung von C:\Windows\System32\ (%SystemRoot%\system32\).
Was also tun? Start in (optional) hinzufügen.
Bei Powershell ist etwas etwas komplexer, dafür gibt es hier einen Beitrag auf Administrator.de
Gruß, Sascha
ich habe ein Problem mit der Aufgabenplanung auf einem Server 2012 R2.
Dieses Problem haben einige, denn sie verstehen nicht wie die Aufgabenplanung arbeitet.Ist das eine Eigenheit von Server 2012 R2?
Oder warum kann man das Skript nicht so ausführen?
Es ist keine Eigenheit von Server 2012 R2.Oder warum kann man das Skript nicht so ausführen?
Es wäre schön, wenn Du deinen Code oder einen Code-Schnipsel zur Verfügung stellst. Dann kann es besser analysiert werden. Hier etwas Licht für das Dunkle in dem sich wohl auch @MichaelW84 befindet.
Wird eine Aufgabenplanung erstellt, die ein Programm Batch/Powershell ausführen soll, dann wird dies stets aus dem System Ordner (%SystemRoot%\system32\) durchgeführt. Dies kann sehr einfach überprüft werden. Einfach eine Batchdatei und die Logdatei wo.txt auf C:\ erstellen mit folgendem Code:
set logfile="C:\wo.txt"
dir > %logfile%
Was also tun? Start in (optional) hinzufügen.
Bei Powershell ist etwas etwas komplexer, dafür gibt es hier einen Beitrag auf Administrator.de
Gruß, Sascha
Das ist für das genannte Problem leider keine Lösung!
Moin zusammen,
die eigentliche Frage ist doch, was macht sein Skript genau!!, wie @SaschaRD auch schon gefragt hat. Denn wenn er irgendwelche Dialoge darstellen oder Netzlaufwerke per Buchstaben ansprechen will ist nämlich klar warum das nicht funktionieren kann, da erstens bei Ausführung von Skripten unter einem anderen Account Skripte keinen Zugriff auf die Session des angemeldeten Users haben und deswegen auch in dieser Hinsicht nichts "grafisches" wie ein Fenster erscheinen kann.
Dann Thema Netzlaufwerke: Hier ebenso, andere Session also eigene Netzlaufwerke d.h. Netzlaufwerke sind ebenfalls Sessionabhängig gemappt. Hier sollte der Zugriff also per UNC Pfad erfolgen.
Dann großes Thema Berechtigungen! Auf alle Ressourcen auf die zugegriffen wird sollten natürlich entsprechende Berechtigungen existieren. Z.B. auch wenn man ein Skript im System-Account laufen lässt das auf Netzwerkfreigaben zugreifen soll. Hier muss dann darauf geachtet werden das auf den Netzlaufwerken entsprechend auf der Freigabe und den NTFS-ACLs passende Einträge für den Computeraccount des anfragenden Clients gegeben sind.
Du siehst es gibt hier diverse Dinge zu beachten.
Warum dein Skript nicht das macht was du von ihm erwartest kann man hier also nur erahnen wenn man weiß was du darin überhaupt machst.
Probleme mit der Aufgabenplanung sind zu 99,9% hausgemacht und kein Fehler des Windows Server sondern des Users der ihn bedient.
Gruß jodel32
die eigentliche Frage ist doch, was macht sein Skript genau!!, wie @SaschaRD auch schon gefragt hat. Denn wenn er irgendwelche Dialoge darstellen oder Netzlaufwerke per Buchstaben ansprechen will ist nämlich klar warum das nicht funktionieren kann, da erstens bei Ausführung von Skripten unter einem anderen Account Skripte keinen Zugriff auf die Session des angemeldeten Users haben und deswegen auch in dieser Hinsicht nichts "grafisches" wie ein Fenster erscheinen kann.
Ich habe das Testweise auch mit Notepad.exe versucht, klappt auch nicht.
Das zeigt dir auch das Starten des Notepad als Task, es wird dir eben nicht angezeigt weil es in einer anderen Session im Hintergrund läuft!! Zeigt dir der Taskmanager sofort.Dann Thema Netzlaufwerke: Hier ebenso, andere Session also eigene Netzlaufwerke d.h. Netzlaufwerke sind ebenfalls Sessionabhängig gemappt. Hier sollte der Zugriff also per UNC Pfad erfolgen.
Dann großes Thema Berechtigungen! Auf alle Ressourcen auf die zugegriffen wird sollten natürlich entsprechende Berechtigungen existieren. Z.B. auch wenn man ein Skript im System-Account laufen lässt das auf Netzwerkfreigaben zugreifen soll. Hier muss dann darauf geachtet werden das auf den Netzlaufwerken entsprechend auf der Freigabe und den NTFS-ACLs passende Einträge für den Computeraccount des anfragenden Clients gegeben sind.
Du siehst es gibt hier diverse Dinge zu beachten.
Warum dein Skript nicht das macht was du von ihm erwartest kann man hier also nur erahnen wenn man weiß was du darin überhaupt machst.
Probleme mit der Aufgabenplanung sind zu 99,9% hausgemacht und kein Fehler des Windows Server sondern des Users der ihn bedient.
Gruß jodel32
Mein Script ist für Datensicherung zuständig, es läuft mit normalen rechten als auch mit admin rechten.
Ich habe es auch mit beiden shells getestet (mit und ohne erhöhen rechten) es funktioniert einwandfrei nur wird es nicht ohne benutzeranmeldung ausgeführt.
Ich habe sogar schon ein Account erstellt der Stapelverarbeitung zulässt (per gpo) leider auch ohne Erfolg.
Ich habe es auch mit beiden shells getestet (mit und ohne erhöhen rechten) es funktioniert einwandfrei nur wird es nicht ohne benutzeranmeldung ausgeführt.
Ich habe sogar schon ein Account erstellt der Stapelverarbeitung zulässt (per gpo) leider auch ohne Erfolg.
Zitat von @LKaderavek:
Meines soll jeden Tag, die jeweilige Archiv USB Festplatte bereinigen bevor die Kopie startet.
net use Z: \\nas-backup-1\MONTAG\BACKUP
Z:
rmdir CLIENTS /S /Q
PING -n 31 127.0.0.1>nul
rmdir SERVER /S /Q
PING -n 31 127.0.0.1>nul
rmdir VEEAM /S /Q
PING -n 31 127.0.0.1>nul
mkdir CLIENTS
mkdir SERVER
mkdir VEEAM
net use Z: /D /Y
exit /b 0
Hinterlege die NAS-Credentials im Tresor des Users "DOMAIN\Administrator" wenn diese anders lauten dann klappt das auch das sind zu 99% Zugriffsprobleme auf das NAS!Meines soll jeden Tag, die jeweilige Archiv USB Festplatte bereinigen bevor die Kopie startet.
net use Z: \\nas-backup-1\MONTAG\BACKUP
Z:
rmdir CLIENTS /S /Q
PING -n 31 127.0.0.1>nul
rmdir SERVER /S /Q
PING -n 31 127.0.0.1>nul
rmdir VEEAM /S /Q
PING -n 31 127.0.0.1>nul
mkdir CLIENTS
mkdir SERVER
mkdir VEEAM
net use Z: /D /Y
exit /b 0
Und das Laufwerksmapping ist absolut überflüssig für deine Batch, mach es ohne das reduziert die eventuelle Fehleranfälligkeit.
Einfach die Ausgabe der Befehle in eine Datei umleiten
........... >>c:\Ordner\debugging.log
Zitat von @LKaderavek:
Gibt es eigtl. schon eine funktionierende Lösung für das Ausführen von Skripts im Taskplaner beim Server 2012 R2??
?? Skripts funktionieren im Taskplaner einwandfrei wenn man alle zu beachtenden Dinge wie oben schon geschrieben wurde auch umsetzt!Gibt es eigtl. schon eine funktionierende Lösung für das Ausführen von Skripts im Taskplaner beim Server 2012 R2??
Es steht und fällt eben immer mit dem User der den Server bedient .
Hier zu behaupten das Skripte unter 2012R2 nicht funktionieren würden ist absoluter Schwachfug, sorry.
Debugging-Optionen wurden dir ja auch schon genannt, also machen und sich mal mit dem Background beschäftigen.
Gruß skybird
Ich habe eine Lösung für das Problem gefunden auch wenn es schon eine Weile her ist...
1. Der user der das Script ausführt muss berechtigt werden Stapelverarbeitung machen zu dürfen.
http://openbook.rheinwerk-verlag.de/microsoft_netzwerk/microsoft_netzwe ...
2. Verknüpfung der Batchdatei erstellen.
Rechtsklick, eigenschaften, erweitert, als administrator ausführen den Haken reinmachen.
3. In der Aufgabenplanung die Verknüpfung zum starten des Scripts angeben, Stapelverarbeitungsuser hinterlegen und den Haken mit erhöten Rechten reinmachen.
Dann sollte es klappen, zumindest war das meine Lösung.
1. Der user der das Script ausführt muss berechtigt werden Stapelverarbeitung machen zu dürfen.
http://openbook.rheinwerk-verlag.de/microsoft_netzwerk/microsoft_netzwe ...
2. Verknüpfung der Batchdatei erstellen.
Rechtsklick, eigenschaften, erweitert, als administrator ausführen den Haken reinmachen.
3. In der Aufgabenplanung die Verknüpfung zum starten des Scripts angeben, Stapelverarbeitungsuser hinterlegen und den Haken mit erhöten Rechten reinmachen.
Dann sollte es klappen, zumindest war das meine Lösung.