如何让PowerShell等待Invoke-Item完成?

时间:2010-04-23 17:23:10

标签: powershell invoke wait

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

4 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:14)

将命令传递给Out-Null。

答案 2 :(得分:8)

不幸的是,您不能直接使用Invoke-Item命令行开关。此命令具有void返回类型,并且没有允许等待的选项。

可用的最佳选择是定义您自己的函数,它包含Process API,如此

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();
    }
}

答案 3 :(得分:0)

一个简单的方法

$session = New-PSSession -ComputerName "xxxxx" -Name "mySession"
$Job = Invoke-Command -Session $session -FilePath "xxxxx" -AsJob
Wait-Job -Job $Job