2016-11-01 9 views
5

私はPowershellを初めて使用しています。プログラミングのバックグラウンドはあまりなく、ソフトウェアパッケージとして使用しようとしています。とにかく、私は-Waitパラメータを使ってstart-processコマンドについて知りました。私が気づいたのは、指定したプロセスを待つだけでなく、メインプロセスがもはや実行されなくても、サブプロセスを待つことです。通常これは良いですが、私は奇妙な状況があります。私は、スタートプロセスで複雑なOracleバッチファイルを実行しています。バッチファイルは最終的に私が実際に待っていたsetup.exeを実行しますが、他のプロセスも停止しないように起動します。したがって、-waitパラメータを使用すると、setup.exeがもう実行されなくてもスクリプトは停止しません。これは動作しますが、私はtimeoutコマンドを使用することなく、より良い方法があるだろうと思うだろうPowershellでstart-processコマンドと-waitコマンドを使用する

saps -FilePath "Path\config.bat" -ArgumentList "arguments" 
Start-Sleep -s 10 
Wait-Process -Name "setup" 

:私が見つけた最も近いが、これを使用しています。何か案は?

+0

'$プロセス=スタートプロセス$パス"引数 "-PassThru; $ process.WaitForExit($ timeoutMS) ' –

答えて

11

あなたは簡単に、このコマンドを使用することができます。

$myprocss = Start-Process "powershell" -PassThru 
$myprocss.WaitForExit() 

このコマンドは、プロセスの終了を継続していきます。

+0

ありがとうございました!私は好奇心が強いです、この場合、-PassThruコマンドを追加する目的は何ですか? – Chris

+0

@Chris:あなたは新しいプロセスを作成します。あなたが-passthruを使うと、$ myprocessのような変数にプロセス情報やプロセスプロパティを割り当てることができます。 – saftargholi

+0

@Chris:あなたが私の答えが好きなら、私の答えを投票してください。 – saftargholi

関連する問題