Powershell等待过程

时间:2012-09-19 10:40:45

标签: powershell wait

过去我使用过Wait-Process并且工作正常。这次我试图优雅地关闭视觉工作室(留出时间保存任何未保存的文件),一旦记事本打开就完成了。

(Get-Process devenv).CloseMainWindow()|等待过程|记事本

不幸的是,当Visual Studio正常关闭时,记事本会同时弹出保存文件对话框。为什么在这种情况下,Wait-Process不能按照规范运行。有一个PowerShell错误,我目前无法理解。

等待进程:输入对象无法绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与采用管道的任何参数都不匹配输入。在行:1 char:54(Get-Process devenv).CloseMainWindow()|等待处理<<<<<

但是我做了很多DoSomethingA | WaitProcess | DoSomethingB命令有效。我无法弄清楚这里的不同情况。

2 个答案:

答案 0 :(得分:2)

试试这样:

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

答案 1 :(得分:1)

CloseMainWindow返回一个布尔值,该值通过管道传递给Wait-Process,但Wait-Process需要一个进程对象而不是一个布尔值。试一试

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