Powershell забывает установить ERRORLEVEL при ошибках парсера?

В командной строке попробуйте следующее:

powershell aaa

echo ErrorLevel is% errorlevel%

Powershell завершится ошибкой ( с ошибкой). Вы также увидите « ErrorLevel is 1 ». Это потому, что он запускает aaa как сценарий, который делает необработанную ошибку, которая устанавливает уровень ошибки.

Однако теперь попробуйте следующее:

powershell '

echo ErrorLevel is% errorlevel%

Powershell завершится ошибкой (с ошибкой). На этот раз вы также увидите « ErrorLevel is 0 » .

Я понимаю, что это другая проблема. Powershell даже скажет, что это ParserError , и это потому, что я испортил аргументы командной строки. И все же это не круто .

Мне неясно, почему он так себя ведет. Я предполагаю, что это была оплошность. Другие программы пренебрегают установкой уровня ошибок при сбоях, но в этом случае они как будто пошли на полпути. Здесь даже устанавливается значение 0 вместо того, чтобы не устанавливать его вообще.

7
задан Johnny Kauffman 15 December 2011 в 19:40
поделиться