2017-05-24 8 views
1

プロセスを開始して2時間ポーズしてからプロセスを終了できますか?私はプロセスを起動してプロセスを終了させることができますが、Start-Sleepコマンドはスクリプトでは機能していないようです。私はこれが簡単だろうと思った。私が何かを逃しているのか、これが2時間も寝ることさえできるのかどうかは分かりません。プロセスを開始し、2時間ポーズしてからPowershellでプロセスを終了するにはどうすればいいですか?

if((Get-Process -Name test -ErrorAction SilentlyContinue) -eq $null){ 
."C:\Program Files (x86)\test.exe" Start-Sleep -s 7200 Stop-Process -name test} 
+3

スクリプトに改行がありますか?そうでない場合、Start-Sleepと残りはtest.exeにパラメータとして渡されます。 test.exeは単独で起動しますか? start-process ... test.exeが別のプロセスで実行される必要があるかもしれません。 – TessellatingHeckler

+0

私はまた、PowerShellのウィンドウについて心配する必要はありませんので、このようなもののためのスケジュールされたタスクを検討します。また、実行制限を設定することもできます。 – Matt

答えて

4

あなたが複数のPowerShellを置いているシングルラインのスクリプトブロックではコマンドは、セミコロンでコマンドを区切る必要があります。

if((Get-Process -Name test -ErrorAction SilentlyContinue) -eq $null){ ."C:\Program Files (x86)\test.exe" ; Start-Sleep -s 7200 ; Stop-Process -name test} 
+0

これはうまくいった!ありがとう! – Adam

3

ちょうどジェフの答えに何かを追加する - あなたはStart-Processを使用することができますし、 -PassThruを実行して、起動した正しいプロセスが終了していることを確認してください。

if ((Get-Process 'test' -EA SilentlyContinue) -eq $null){ 
    $Process = Start-Process "C:\Program Files (x86)\test.exe" -PassThru 
    Start-Sleep -Seconds (2*60*60) 
    $Process | Stop-Process 
} 

このプロセスは、このスクリプトは、わずか2時間後にそれを殺すことはありませんが、正しいプロセスを強制終了することを、別の理由で死に、手動またはスクリプトなどの別のコピーによってリニューアルされている場合ことを意味します。

+0

これも動作します!ありがとう! – Adam

関連する問題