2012-09-19 54 views
0

我在過去使用了等待進程,它工作正常。這一次,我試圖平穩關閉視覺工作室(允許時間保存任何未保存的文件),一旦完成記事本打開。Powershell等待進程

(Get-Process devenv).CloseMainWindow()|等待進程|記事本

不幸的是,雖然Visual Studio的關閉正常,記事本與保存文件對話框同時彈出。爲什麼在這種情況下,等待進程不按照規範工作。有一個powershell錯誤伴隨我目前無法理解。

等待進程:輸入對象不能被綁定到該命令的任何參數或者是因爲該命令不採取管道輸入或輸入和它的屬性不匹配任何採取流水線輸入參數。在行:1 char:54(Get-Process devenv).CloseMainWindow()|等待進程< < < <

但是我已經做了很多DoSomethingA | WaitProcess | DoSomethingB命令的工作。我無法弄清楚這裏的不同情況。

+0

(獲取進程devenv的).CloseMainWindow()不是管道的過程.. –

+0

啊好了,沒有什麼可等待就是你說的。無論如何,我可以實現我想要的嗎? – user1054637

+0

我已經發布了一個答案。嘗試一下......並給我一個反饋 –

回答

1

CloseMainWindow返回一個布爾值,該值被傳送給Wait-Process,但Wait-Process需要一個過程對象而不是布爾值。試試這個

Get-Process devenv | ForEach-Object { 
    $null=$_.CloseMainWindow() 
    Wait-Process -Id $_.id 
    notepad 
} 
+0

這是有道理的,有沒有什麼辦法可以實現我想要的? – user1054637

+0

也許捕捉結果並根據您返回的值進行回覆。 –

+0

但這就是問題所在,我如何讓下一個進程等待CloseMainWindow()返回它的值。它會返回一個布爾值,但下一個過程將會啓動。 – user1054637

2

嘗試這樣的:

Get-Process devenv | % {$_.CloseMainWindow()}; wait-process devenv -ea silentlycontinue ; notepad 
+0

對不起,由於某種原因,我沒有看到這個基督徒,我很困惑你爲什麼說你發佈了一個解決方案!這確實按預期工作,感謝答覆。 – user1054637

+0

如果它適用於您接受它作爲答案..謝謝。 –