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?
fonte
1.
no geral guia ter certeza ambosRun whether user is logged on or not
eRun with highest privileges
e2.
da ação de edição no programa / script campo ter certeza de terPowerShell
, no adicionar argumentos campo tem-ExecutionPolicy Bypass -File "C:\Scripts\MyScript.ps1"
e em o campo Start in haveC:\Windows\System32\WindowsPowerShell\v1.0
.... deixe-me saber se isso ajuda, mas é isso que funciona para mim Captura de tela -> i.imgur.com/T11RnU5.pngRun whether user is logged on or not
ele 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 aRun 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-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.Respostas:
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}";
fonte