web-dev-qa-db-ja.com

PowerShellスクリプトのスケジュールされたタスクが終了しない

this Powershellスクリプトを使用して、Win7マシンの一部のバックアップを自動化したい。 Powershellターミナルから手動で実行すると、スクリプトはアドバタイズされたとおりに実行され、数秒後に終了します(これは小さなバックアップです)。

問題は、タスクスケジューラを使用してプロセスを自動化しようとしたときです。時が来たとき(またはタスクを手動で実行したとき)、スクリプトが実行され、バックアップが正しく実行されます。しかし、それが終了したことを知っていても、「Ready」には戻りません。毎回手動でタスクを停止する必要があります。

さて、タスクを再実行するときが来るのを待ちきれませんでしたが、「準備完了」ではないため、2回目は開始されないと思います。

それについて私は何ができますか?

更新1:

私が選択したアクションは「プログラムの開始」です。 「プログラム/スクリプト」ボックスに「powershell.exe」があり、引数としてスクリプト「* .ps1」ファイルへのパスがあります。

更新1:

タスクが「準備完了」に戻らないにもかかわらず、手動で開始すると、再び実行されることに気付きました。

3
dlyk1988

BackupScript.ps1の最後の2行は

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

これらをコメントアウト(または削除)すると、スケジュールされたジョブが完了して正常に終了するはずです。最後に一時停止が本当に必要な場合は、最後の行を this のようなものに置き換えて、タイムアウトをラップします(各スリープは1秒です)。

$counter = 0
while(!$Host.UI.RawUI.KeyAvailable -and ($counter++ -lt 600))
{
      [Threading.Thread]::Sleep( 1000 )
}
7
xXhRQ8sD2L7Z