Eu tenho alguns scripts do Exchange 2010 PowerShell que gostaria de executar como tarefas agendadas.
Se eu iniciar o PowerShell usando "Executar como usuário diferente", eu posso executar os scripts e eles serão executados corretamente.
Se eu agendar uma tarefa usando o mesmo usuário, a tarefa permanecerá no estado Em execução para sempre.
Como posso descobrir onde a tarefa está ficando paralisada?
Para referência, veja como habilito o material do Exchange:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
E aqui estão as maneiras pelas quais tentei executar o script no Agendador de tarefas:
- comando do powershell "& {. 'c: \ windows \ script.ps1'}"
- powershell -file 'c: \ windows \ script.ps1'
- arquivo de configuração "c: \ windows \ script.ps1"
Tudo com o mesmo resultado. Grr ...
exchange
exchange-2010
powershell
scheduled-task
pescoço longo
fonte
fonte
Register-ScheduledJob
nunca 'terminou'; terminou assim que fechei meu console do PowerShell e o ISE.Respostas:
Você precisa modificar sua política de execução ou especificar o
-ExecutionPolicy Bypass
parâmetro como linha de comando.fonte
Não tenho certeza se é assim que você está fazendo isso, mas quando estou executando scripts do PowerShell por meio do agendador de tarefas, uso a ação "Iniciar um programa", selecione o PowerShell e adiciono os argumentos a partir daí. Pode ser o que você está fazendo aqui, mas não está claro. Aqui está uma captura de tela:
Por política de execução TheCompWiz também pode ser um problema.
fonte
-command
Eu tive o mesmo problema. No meu caso, a solução foi especificar o diretório "start in" (meu script leria o conteúdo de um arquivo que não seria encontrado porque não especifiquei o caminho completo para o arquivo).
fonte
Eu tive o mesmo problema e o comentário de "user279399" para usar o comando taskkill foi super útil, só precisava de modificação. Aqui está a minha solução no final da sintaxe do argumento
Este comando mata apenas a sessão do PowerShell em execução nessa conta de usuário. É uma prática recomendada ter uma conta de administrador do Exchange separada para executar tarefas agendadas.
fonte
Tente adicionar no final do seu script [taskkill / f / im "powershell.exe"], isso matará todos os processos "powershell.exe". Não sei como eliminar o processo atual do power-shell (equivalente a [cmd.exe / c]). Mas fará o truque.
fonte