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

0

Eu tenho um problema muito estranho.
Um script do PowerShell é iniciar um exe. Funciona bem quando executado manualmente (clique com o botão direito do mouse> executar) ou via chamada de script no console do PowerShell. No entanto, quando crio uma tarefa no agendador de tarefas, ele basicamente cria um processo com o nome próprio, mas o processo está 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 um usuário administrador e também tentei "executar com os privilégios mais altos" marcado. Isso também não ajudou.

Quando executo a tarefa e inicio o programa manualmente, ele 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 for executado manualmente. Alguém pode me ajudar aqui?

Rattical Red
fonte
Quando você diz o Planejador de Tarefas, vou assumir que você quer dizer Agendador de Tarefas. Se não for esse o caso, você precisará explicar o que é o Planejador de Tarefas. Supondo que você tenha a tarefa definida para ser executada no seu contexto de usuário?
EBGreen
@RatticalRed Aqui está como eu acho que você precisa configurá-lo no Agendador de Tarefas ... 1.no geral guia ter certeza ambos Run whether user is logged on or note Run with highest privilegese 2.da ação de edição no programa / script campo ter certeza de ter PowerShell, no adicionar argumentos campo tem -ExecutionPolicy Bypass -File "C:\Scripts\MyScript.ps1"e em o campo Start in have C:\Windows\System32\WindowsPowerShell\v1.0.... deixe-me saber se isso ajuda, mas é isso que funciona para mim Captura de tela -> i.imgur.com/T11RnU5.png
Pimp Juice IT
Além disso, quando você salvar esse trabalho, uma vez que, a partir do General , Run whether user is logged on or notele solicitará o nome de usuário e a senha para executar esse trabalho, para garantir que esta conta tenha permissões para executar o script PS e executar o arquivo executável. irá executar. Se você decidir não usar essa opção, mas usar apenas a Run with highest privileges, ela será iniciada somente quando a conta que você a agendar no Agendador de tarefas estiver conectada. Se for essa a que funcionar quando você clicar duas vezes e for suficiente, funcionará muito embora
Pimp Juice IT
Seu problema é mais do que provável os pontos e configurações indicados no item 2 acima, mas quando você usa -Command "& <PS Script>"isso da maneira que deseja, se um lote estiver executando seu script PS, basta configurar os campos etc. O nº 2 aponta em particular e deve resolver o problema para você. Isso funciona de maneira muito confiável para mim.
Juice Pimp TI
Olá EBGreen, obrigado pela sua resposta. Primeiro, peço desculpas pela confusão. Sim, quero dizer Agendador de tarefas, o planejador foi um erro de tradução. Eu editei a postagem de acordo. Eu ajustei as configurações da maneira que você escreveu, mas não houve alterações, os sintomas permanecem os mesmos.
Rattical Red

Respostas:

0

Corri para o que parece ser um problema muito semelhante. Normalmente, o aplicativo que eu tinha esse problema era aberto e começava a processar uma fila de arquivos. Nesse caso, como você descreveu, ele permaneceria completamente ocioso quando executado a partir de uma tarefa agendada. Por fim, o que funcionou foi um arquivo em lotes chamado da tarefa agendada que, em seguida, chamou o .ps1 que iniciou o .exe.

As linhas no arquivo em lotes são parecidas abaixo e são chamadas a partir da tarefa agendada com configurações correspondentes à sua descrição. O LaunchProcess.ps1 na minha instalação contém um processo inicial padrão para o exe. Eu não usei este servidor 2008r2 passado, mas imagino que funcione até o momento.

nome do arquivo em lote = restartProcess.bat

SET ThisScriptsDirectory =% ~ dp0 SET PowerShellScriptPath =% ThisScriptsDirectory% LaunchProcess.ps1 Comando do PowerShell -NoProfile -ExecutionPolicy Bypass-command "& {start-process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File" "% PowerShellScript Correr como}";

2manygadgets
fonte
Olá 2manygadgets, obrigado pela sua resposta. É recomendável ter o agendador executando um lote que inicia o arquivo do PowerShell. No entanto, eu tentei agora e a mesma coisa acontece. Pode-se pensar que, como o agendador executa apenas o lote e não toca no ps1, deve estar bem, mas não está. Quando inicio o lote normalmente, ele funciona. No entanto, quando o agendador o executa, os sintomas são os mesmos da postagem original.
Rattical Red