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