Как заставить PowerShell дождаться завершения вызова Invoke-Item? Я вызываю неисполняемый элемент, поэтому мне нужно использовать Invoke-Item, чтобы открыть его.
Как заставить PowerShell ждать завершения Invoke-Item?
Ответ 1
К сожалению, вы не можете напрямую использовать командный символ 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();
}
}
Ответ 2
Просто используйте Start-Process -wait
, например Start-Process -wait c:\image.jpg
. Это должно работать так же, как и файл @JaredPar.
Ответ 3
Подключите свою команду к Out-Null.
Ответ 4
Один простой способ
$session = New-PSSession -ComputerName "xxxxx" -Name "mySession"
$Job = Invoke-Command -Session $session -FilePath "xxxxx" -AsJob
Wait-Job -Job $Job