El script no puede iniciar exe cuando se ejecuta desde el Programador de tareas

El script no puede iniciar exe cuando se ejecuta desde el Programador de tareas

Tengo un problema muy extraño.
Un script de PowerShell sirve para iniciar un archivo ejecutable. Funciona bien cuando se ejecuta manualmente (haga clic derecho > ejecutar) o mediante una llamada de script en la consola de PowerShell. Sin embargo, cuando creo una tarea en el programador de tareas, básicamente crea un proceso con el nombre adecuado, pero el proceso está vacío y no hace nada. No requiere CPU, el programa no aparece en la barra de tareas y la ventana del programa no se abre. El script básicamente sólo contiene:

Start-Process -FilePath <Path to exe>

También probé:

& <path to file>

pero eso tampoco funcionó. La tarea inicia el programa powershell.exe con el parámetro

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

Lo ejecuto como usuario administrador y también intenté "ejecutar con los privilegios más altos" marcado. Eso tampoco ayudó.

Cuando ejecuto la tarea y luego inicio el programa manualmente, se generan dos procesos separados con el mismo nombre pero con diferentes identificadores. Normalmente sólo se puede ejecutar una instancia del programa.

Aparentemente esto es un problema con el programador de tareas, ya que el script funciona bien si se ejecuta manualmente. ¿Me puede ayudar alguien?

Respuesta1

Me encontré con lo que parece un problema muy similar. Normalmente, la aplicación con la que tuve este problema se abría y comenzaba a procesar una cola de archivos. En este caso, como usted describió, permanecería completamente inactivo cuando se ejecutara desde una tarea programada. Al final, lo que funcionó fue un archivo por lotes llamado desde la tarea programada que luego llamó al .ps1 que inició el .exe.

Las líneas del archivo por lotes se ven como a continuación y se llaman desde la tarea programada con configuraciones que coinciden con su descripción. LaunchProcess.ps1 en mi configuración contiene un proceso de inicio estándar para el exe. No he usado este servidor 2008r2 anterior, pero imagino que funciona hasta la fecha.

nombre de archivo del archivo por lotes = 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 Correr como}";

información relacionada