2016-11-01 33 views
5

'da başlatma işlemini ve beklet komutunu kullanma Powershell uygulamasında yeniyim ve yazılım arka planı için kullanmaya çalışıyorum. Her neyse, -Wait parametresiyle start-process komutunu öğrendim ve çoğu şey için harika çalışıyor. Yine de fark ettiğim şey, yalnızca belirttiğiniz işlemi beklemek değil, ana süreç artık çalıştıktan sonra bile herhangi bir alt işlemi bekler. Genellikle bu iyi, ama garip bir durumum var. Başlangıç ​​işlemiyle karmaşık bir Oracle toplu iş dosyası çalıştırıyorum. Toplu iş dosyası, gerçekten beklemek istediğim şey olan setup.exe'yi çalıştırır, ancak diğer işlemler de asla durmadan ortaya çıkar. Yani -wait parametresini kullanırsam, bet.exe artık çalıştıktan sonra bile komut dosyası hiç durmaz.Powershell

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

Bu çalışır, ancak ben bir zaman aşımı komutu kullanmak zorunda kalmadan daha iyi bir yol olurdu düşünürdüm: buldum yakın bu kullanıyor. Herhangi bir fikir?

+0

'$ process = Başlangıç ​​Süreci $ yol" argümanlar "-PassThru; $ process.WaitForExit ($ timeoutMS) ' –

cevap

11

kolay bu komutu kullanabilirsiniz:

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

bu komut zaman süreci sona devam edecektir.

+0

Teşekkürler, işe yaradı! Merak ediyorum, bu durumda -PassThru komutunun eklenmesinin amacı nedir? – Chris

+0

@Chris: Yeni bir süreç başlattığınızda yeni süreçler yaratabilirsiniz. -passthru kullandığınızda, işlem bilgisini ya da işlemi $ myprocess gibi bir değişkene işlediğinizde, işleminizi bu şekilde kontrol edebilirsiniz. – saftargholi

+0

@Chris: Eğer cevabımı beğenirseniz lütfen cevabıma oy verin – saftargholi