Eu tenho o seguinte script do PowerShell salvo como test.ps1:
# test script
Write-Output "z" >> C:\path\to\log.txt
Na Agenda de Tarefas, configurei para " Executar se o usuário está logado ou não ".
O gatilho é " Uma vez ", mas tenho " Repetir tarefa a cada: " marcado e definido como " 5 minutos ".
Na guia Ações, tenho uma ação - " Iniciar um programa " definido como " powershell.exe " com " Adicionar argumentos (opcional) " definido como " -arquivo c:\path\to\test.ps1 " e " Iniciar em (opcional) " definido como " c:\path\to ".
Na guia Histórico, vejo:
O Agendador de Tarefas iniciou a ação "powershell.exe" na instância "{a1485114-69fe-4aa8-95ee-27d8f260591a}" da tarefa "\test".
Então, parece que está funcionando para mim, mas o log.txt não está sendo criado ou adicionado.
Alguma ideia?
O script do PowerShell do Agendador de Tarefas não está em execução
Com base no que você descreve, você pode fazer alguns pequenos ajustes e verificar algumas outras configurações fáceis de ignorar que podem causar esses mesmos problemas às vezes.
Na guia Ação , você criará uma Ação definida como:
Start a program
Powershell
-ExecutionPolicy Bypass -File "c:\path\to\test.ps1"
C:\Windows\System32\WindowsPowerShell\v1.0
Além disso, algumas dessas opções no seu caso também podem ajudar, não estou 100%, elas são necessárias, mas são fáceis de testar.
Na guia Geral da tarefa agendada, certifique-se de que as opções Executar se o usuário estiver conectado ou não e Executar com privilégios mais altos estejam selecionadas.
Muito importante, certifique-se de que a hora de início seja a hora exata em que você deseja que o processo seja executado pela primeira vez, mas de uma data anterior e, em seguida, ele será executado primeiro, começando apenas nessa hora .
Considere também usar
Write-Output "z" | Out-File "C:\path\to\log.txt"
com ou sem o-Append
parâmetro para redirecionar a saída para o arquivo caso esse seja o problema.Por fim, na guia Configurações , você também pode desmarcar a tarefa Executar o mais rápido possível após a perda de um início agendado, pois isso também pode causar esse problema. uma data anterior e, em seguida, ele será executado primeiro apenas nesse momento .
Solução de problemas adicionais
Como você está usando a opção Executar com o usuário conectado ou não , você pode efetuar login no sistema com a credencial com a qual você executa esse trabalho quando solicitado e usando essa opção.
Uma vez conectado, abra o cmd e, em seguida, execute
PowerShell.exe -ExecutionPolicy Bypass -File "c:\path\to\test.ps1"
e veja qual resultado ou erros você obtém de lá, que podem precisar ser resolvidos, como a conta não ter acesso de execução ao script ps1, etc.Recursos adicionais