В командной строке попробуйте следующее:
powershell aaa
echo ErrorLevel is% errorlevel%
Powershell завершится ошибкой ( с ошибкой). Вы также увидите « ErrorLevel is 1 ». Это потому, что он запускает aaa как сценарий, который делает необработанную ошибку, которая устанавливает уровень ошибки.
Однако теперь попробуйте следующее:
powershell '
echo ErrorLevel is% errorlevel%
Powershell завершится ошибкой (с ошибкой). На этот раз вы также увидите « ErrorLevel is 0 » .
Я понимаю, что это другая проблема. Powershell даже скажет, что это ParserError , и это потому, что я испортил аргументы командной строки. И все же это не круто .
Мне неясно, почему он так себя ведет. Я предполагаю, что это была оплошность. Другие программы пренебрегают установкой уровня ошибок при сбоях, но в этом случае они как будто пошли на полпути. Здесь даже устанавливается значение 0 вместо того, чтобы не устанавливать его вообще.