Powershell: Как мне получить код выхода, возвращенный из процесса, запущенного внутри PsJob?

У меня есть следующая работа в PowerShell:

$job = start-job {
  ...
  c:\utils\MyToolReturningSomeExitCode.cmd
} -ArgumentList $JobFile

Как мне получить доступ к коду выхода, возвращенному c: \ utils \ MyToolReturningSomeExitCode.cmd ? Я пробовал несколько вариантов, но единственный, который мне удалось найти, работает, это следующий:

$job = start-job {
  ...
  c:\utils\MyToolReturningSomeExitCode.cmd
  $LASTEXITCODE
} -ArgumentList $JobFile

...

# collect the output
$exitCode = $job | Wait-Job | Receive-Job -ErrorAction SilentlyContinue
# output all, except the last line
$exitCode[0..($exitCode.Length - 2)]
# the last line is the exit code
exit $exitCode[-1]

Я нахожу этот подход слишком кривым для моего тонкого вкуса. Может ли кто-нибудь предложить более приятное решение?

Важно , я прочитал в документации, что PowerShell должен запускаться от имени администратора, чтобы работа удаленного взаимодействия работала. Я не могу запустить его от имени администратора, поэтому -ErrorAction SilentlyContinue . Итак, я ищу решения, не требующие прав администратора.

Спасибо.

16
задан mark 26 December 2011 в 10:51
поделиться