A tarefa agendada do script Powershell não terminará

3

Eu quero usar o este script do Powershell para automatizar alguns backups em máquinas Win7. Quando executado manualmente a partir do terminal Powershell, o script é executado como anunciado e termina após alguns segundos (é um backup pequeno).

O problema é quando tento automatizar o processo com o Agendador de Tarefas. Quando chega a hora (ou quando executo a tarefa manualmente), o script é executado e executa o backup corretamente. Mas ele não retorna para "Pronto", embora eu saiba que acabou. Eu tenho que parar a tarefa manualmente a cada vez.

Agora, eu não esperei para ver o que acontece quando chega a hora da tarefa ser executada novamente, mas acho que não será iniciada uma segunda vez, porque não é "Pronto".

O que posso fazer sobre isso?

UPDATE 1:

A ação que escolhi é "Iniciar um programa". Na caixa "Program / script" eu tenho "powershell.exe" e como argumento eu tenho o caminho para o script "* .ps1" arquivo.

UPDATE 1:

Percebi que, embora a tarefa não retorne para "Pronto", se eu a iniciar manualmente, ela será executada novamente.

    
por dsljanus 19.11.2014 / 15:55

1 resposta

7

As últimas 2 linhas de BackupScript.ps1 são

Write-Host "Press any key to close ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Comente-os (ou exclua-os) e os trabalhos agendados devem ser concluídos e encerrados de forma limpa. Se você realmente quiser a pausa no final, substitua a última linha por algo como para envolver um tempo limite em torno dele (cada sono é de 1 segundo):

$counter = 0
while(!$Host.UI.RawUI.KeyAvailable -and ($counter++ -lt 600))
{
      [Threading.Thread]::Sleep( 1000 )
}
    
por 21.11.2014 / 00:08