Как я заставляю PowerShell ожидать, пока вызов Вызывать-объекта не закончился? Я вызываю неисполняемый объект, таким образом, я должен использовать Вызывать-объект для открытия его.
К сожалению, вы не можете использовать командлет Invoke-Item
напрямую. Эта команда let имеет тип возвращаемого типа void и не имеет параметров, разрешающих ожидание.
Лучшим вариантом является определение собственной функции, которая заключает в себе API Process
таким образом
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();
}
}
Просто используйте Start-Process -wait
, например Start-Process -wait c:\image.jpg
. Это должно работать так же, как и в случае с @JaredPar.