Как заставить PowerShell ожидать завершения Вызывать-объекта?

Как я заставляю PowerShell ожидать, пока вызов Вызывать-объекта не закончился? Я вызываю неисполняемый объект, таким образом, я должен использовать Вызывать-объект для открытия его.

17
задан arathorn 23 April 2010 в 17:23
поделиться

3 ответа

К сожалению, вы не можете использовать командлет 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();
    }
}
8
ответ дан 30 November 2019 в 11:08
поделиться

Передайте команду Out-Null.

16
ответ дан 30 November 2019 в 11:08
поделиться

Просто используйте Start-Process -wait, например Start-Process -wait c:\image.jpg. Это должно работать так же, как и в случае с @JaredPar.

20
ответ дан 30 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: