Чтобы добавить к @UnhandledExcepSean ответ, в котором он увидел, что его проблема связана с копированием \ вставкой в консоль PowerShell.
Основная проблема заключается в том, что PSReadline
изменил функциональность вставки правой кнопкой мыши.
PSReadline , изначально предлагаемый в качестве устанавливаемого модуля для PowerShell v3 и v4, теперь поставляется по умолчанию с PowerShell v5 + и PowerShell Core 6+.Это хороший модуль, который добавляет кучу новых вещей, таких как подсветка синтаксиса, улучшенное многострочное редактирование и т. Д.
Когда импортируется PSReadline
, вставка правой кнопкой мыши не работает должным образомсм. проблему GitHub: Вставка правой кнопкой мыши должна работать в основном как Ctrl + v paste 579 .Что происходит в:
PSReadLine, если вход "завершен", например, он анализирует без исключения IncompleteParseException, то вход будет принят ...
[https://github.com/PowerShell/PSReadLine/issues/579#issuecomment-345824783]
По сути, вставка по щелчку правой кнопкой мыши происходит с хоста «GUI» терминала Windows PowerShell и передает символы в консоль PowerShell, где они перехватываются и интерпретируются PSReadline
чтобы обеспечить такие вещи, как подсветка синтаксиса.По мере приближения конечная }
фигурная скобка + символ новой строки завершает оператор и выполняет его.Второй оператор catch
в новой строке затем выдает ошибку, потому что он действительно сам по себе не корректен.
Вместо этого, если вы используете Ctrl+V
для вставки, вышеупомянутое копирование / вставка кода работает работает.функция Ctrl+V
доставляет все содержимое буфера обмена одновременно до PSReadline
, что интерпретирует все в целом, прежде чем продолжить выполнение.
Вы не увидите, что это случится с PowerShell ISE или сценариями, потому что щелчок правой кнопкой мышиВставка не происходит.
Ради интереса, вы можете удалить PSReadline
в сеансе консоли PowerShell:
Remove-Module PSReadline
И затем увидеть, что вставка по щелчку правой кнопкой мыши теперь работает "ожидаемым".... Хотя все достоинства PSReadline
также пропали: - (
Поскольку функция щелчка правой кнопкой мыши - это проблема терминала Windows PowerShell, даже если PSReadline
захотел перехватить нажатие правой кнопки мышиловушку мыши, для эмуляции функции буфера обмена Windows теперь потребуется PSReadline
, чтобы использовать специальные API-интерфейсы Windows. Это идет вразрез с кросс-платформенной функциональностью «Core».вставлять как только рекомендуемый способ вставки.