O script não pode iniciar o exe quando executado no Agendador de tarefas

O script não pode iniciar o exe quando executado no Agendador de tarefas

Eu tenho um problema muito estranho.
Um script do PowerShell serve para iniciar um exe. Funciona bem quando executado manualmente (clique com o botão direito> executar) ou por meio de chamada de script no console do PowerShell. Porém, quando eu crio uma tarefa no agendador de tarefas, ele basicamente cria um processo com o nome próprio, mas o processo fica vazio e não faz nada. Não requer CPU, o programa não está listado na barra de tarefas e a janela do programa não abre. O script basicamente contém apenas:

Start-Process -FilePath <Path to exe>

Eu também tentei:

& <path to file>

mas isso também não funcionou. A tarefa inicia o programa powershell.exe com o parâmetro

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

Eu o executo como usuário administrador e também tentei "executar com privilégios mais altos" marcado. Isso também não ajudou.

Quando executo a tarefa e inicio o programa manualmente, isso resulta em dois processos separados com o mesmo nome, mas com identificadores diferentes. Normalmente, apenas uma instância do programa pode ser executada.

Aparentemente, isso é um problema com o agendador de tarefas, pois o script funciona bem se executado manualmente. Alguém pode me ajudar aqui?

Responder1

Encontrei o que parece ser um problema muito semelhante. Normalmente, o aplicativo com o qual tive esse problema abriria e começaria a processar uma fila de arquivos. Nesse caso, como você descreveu, ele ficaria completamente ocioso quando executado a partir de uma tarefa agendada. No final das contas, o que funcionou foi um arquivo em lote chamado a partir da tarefa agendada que chamou o .ps1 que iniciou o .exe.

As linhas no arquivo em lote têm a aparência abaixo e são chamadas a partir da tarefa agendada com configurações que correspondem à sua descrição. LaunchProcess.ps1 na minha configuração contém um processo de inicialização padrão para o exe. Não usei este servidor 2008r2 anterior, mas imagino que funcione até o momento.

arquivo em lote nome do arquivo = 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}";

informação relacionada