Skript kann EXE nicht starten, wenn es vom Taskplaner ausgeführt wird

Skript kann EXE nicht starten, wenn es vom Taskplaner ausgeführt wird

Ich habe ein sehr merkwürdiges Problem.
Ein Powershell-Skript soll eine EXE starten. Es funktioniert einwandfrei, wenn es manuell ausgeführt wird (Rechtsklick > Ausführen) oder über den Skriptaufruf in der Powershell-Konsole. Wenn ich jedoch im Taskplaner eine Aufgabe erstelle, wird zwar grundsätzlich ein Prozess mit dem richtigen Namen erstellt, aber der Prozess ist leer und tut nichts. Er benötigt keine CPU, das Programm wird nicht in der Taskleiste aufgeführt und das Programmfenster öffnet sich nicht. Das Skript enthält im Wesentlichen nur:

Start-Process -FilePath <Path to exe>

Ich habe auch versucht:

& <path to file>

aber das hat auch nicht funktioniert. Der Task startet das Programm powershell.exe mit dem Parameter

-ExecutionPolicy Unrestricted -Command "& C:\Scripts\MyScript.ps1"

Ich habe es als Administrator ausgeführt und auch versucht, „mit höchsten Berechtigungen ausführen“ zu aktivieren. Das hat auch nicht geholfen.

Wenn ich die Aufgabe ausführe und dann das Programm manuell starte, entstehen zwei separate Prozesse mit demselben Namen, aber unterschiedlichen Handles. Normalerweise kann nur eine Instanz des Programms ausgeführt werden.

Dies ist anscheinend ein Problem mit dem Taskplaner, da das Skript bei manueller Ausführung einwandfrei funktioniert. Kann mir hier jemand helfen?

Antwort1

Ich bin auf ein Problem gestoßen, das sehr ähnlich klingt. Normalerweise würde die Anwendung, mit der ich dieses Problem hatte, geöffnet und mit der Verarbeitung einer Warteschlange von Dateien beginnen. In diesem Fall würde sie, wie Sie beschrieben haben, völlig im Leerlauf bleiben, wenn sie von einer geplanten Aufgabe ausgeführt wird. Was letztendlich funktionierte, war eine Batchdatei, die von der geplanten Aufgabe aufgerufen wurde und dann die .ps1-Datei aufrief, die die .exe startete.

Die Zeilen in der Batchdatei sehen wie unten aus und werden von der geplanten Aufgabe mit Einstellungen aufgerufen, die Ihrer Beschreibung entsprechen. LaunchProcess.ps1 in meinem Setup enthält einen Standardstartprozess für die EXE. Ich habe dies nicht auf dem letzten 2008r2-Server verwendet, aber ich kann mir vorstellen, dass es bis zum aktuellen Server funktioniert.

Batchdatei Dateiname = restartProcess.bat

SET ThisScriptsDirectory=%~dp0 SET PowerShellScriptPath=%ThisScriptsDirectory%LaunchProcess.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -command "& {start-process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}";

verwandte Informationen