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?


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}";


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.