Я сделал что-то подобное на днях. Мой случай был немного другим. Я что-то начинал, я хотел, чтобы что-то произошло, когда этот процесс закончился, а пока я занимался чем-то другим. Для этого я использовал событие. Вот пример использования Блокнота:
$do_other_stuff = {
Write-Host 'Do Other Stuff'
Get-EventSubscriber | Unregister-Event
}
$p = Start-Process notepad.exe -PassThru
...do other stuff...
$job = Register-ObjectEvent -InputObject $p `
-EventName Exited `
-SourceIdentifier notepad `
-Action $do_other_stuff
Если бы я хотел подождать, пока сработает четность, я бы использовал Wait-Event
. По окончании работы установщика в блоке сценария $do_other_stuff
все, что вы хотите сделать.
На ваш вопрос у меня сработало следующее:
$p = Start-Process notepad.exe -PassThru -Wait
...do stuff...
Как и ...
$p = Start-Process notepad.exe -PassThru
$p.WaitForExit()
...do stuff...
Эти случаи работали при запуске скрипта в контексте с повышенными и повышенными правами. Он работал при передаче учетных данных в Start-Process
через параметр -Credential
. Я не смог попробовать, где учетная запись, вызывающая Start-Process
, является учетной записью с низким уровнем привилегий; У меня встреча в нескольких, извините.