Подтвердить что ты не робот

Разница между $? и $LastExitCode в PowerShell

В PowerShell, в чем разница между $? и $LastExitCode?

Я прочитал об автоматических переменных, и он сказал:

$? Contains the execution status of the last operation. It contains TRUE if the last operation succeeded and FALSE if it failed.

$LastExitCode Contains the exit code of the last Windows-based program that was run.

В определении $? он не объясняет, что означает преуспевание и сбой.


Я спрашиваю, потому что предположил, что $? является True тогда и только тогда, когда $LastExitCode равен 0, но я нашел неожиданный встречный пример: $LastExitCode = 0, но $? = Неверно в PowerShell. Перенаправление stderr в stdout дает NativeCommandError.

4b9b3361

Ответ 1

$LastExitCode - код возврата собственных приложений. $? просто возвращает True или False в зависимости от того, завершилась ли последняя команда (командлет или родной) без ошибок или нет.

Для отказа командлетов обычно подразумевается исключение, для собственных приложений это ненулевой код выхода:

PS> cmd /c "exit 5"
PS> $?
False
PS> cmd /c "exit 0"
PS> $?
True

Отмена командлета с помощью Ctrl + C также будет считаться ошибкой; для собственных приложений это зависит от того, какой код выхода они устанавливают.