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