У меня есть следующая работа в 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
. Итак, я ищу решения, не требующие прав администратора.
Спасибо.