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