18

如何让 PowerShell 等到 Invoke-Item 调用完成?我正在调用一个不可执行的项目,所以我需要使用 Invoke-Item 来打开它。

4

4 回答 4

25

只是使用Start-Process -wait,例如 Start-Process -wait c:\image.jpg。这应该与@JaredPar 的工作方式相同。

于 2010-04-23T18:14:28.950 回答
19

通过管道将您的命令传递给 Out-Null。

于 2010-04-24T20:44:56.493 回答
8

不幸的是,您不能Invoke-Item直接使用 Commandlet。这个命令 let 有一个 void 返回类型并且没有允许等待的选项。

最好的选择是定义你自己的函数来包装ProcessAPI 像这样

function Invoke-Command() {
    param ( [string]$program = $(throw "Please specify a program" ),
            [string]$argumentString = "",
            [switch]$waitForExit )

    $psi = new-object "Diagnostics.ProcessStartInfo"
    $psi.FileName = $program 
    $psi.Arguments = $argumentString
    $proc = [Diagnostics.Process]::Start($psi)
    if ( $waitForExit ) {
        $proc.WaitForExit();
    }
}
于 2010-04-23T17:31:42.833 回答
2

一种简单的方法

$session = New-PSSession -ComputerName "xxxxx" -Name "mySession"
$Job = Invoke-Command -Session $session -FilePath "xxxxx" -AsJob
Wait-Job -Job $Job
于 2016-10-14T15:41:57.120 回答