Примечание: Удаление и использование Invoke-Command
являются случайными для вашей проблемы .
Так как проблема возникает с строковым литералом в исходном коде (...\01_Klassenbücher\...
) наиболее вероятное объяснение состоит в том, что файл сценария неправильно интерпретирован PowerShell .
в Windows PowerShell (в отличие от PowerShel *).1017 * Core ), если ваш файл сценария де-факто имеет кодировку UTF-8, но не имеет спецификации , PowerShell неверно интерпретирует любые символы, не входящие в ASCII-диапазон (например,ü
) в скрипте. [1]
Поэтому: Повторно сохраните ваш скрипт как UTF-8 с BOM .
Почему вы должны сохранять свои сценарии как UTF-8 с спецификацией:
Код Visual Studio и другие современные редакторы создают файлы UTF-8 без спецификации по умолчанию, что является причиной проблемы в Windows PowerShell.
В отличие от этого, PowerShell ISE создает файлы [1] с кодировкой ANSI, которые Windows PowerShell, но не PowerShell Core , читает правильно.
Вы можете обойтись только с файлами, закодированными в ANSI:
, если ваши скрипты никогда не будут выполняться в PowerShell Core - где все будущие усилия по разработкебудет идти.
, если ваши сценарии никогда не будут выполняться на компьютере, на котором действует другая кодовая страница "ANSI".
, если ваш скрипт не содержит символов - например, эмодзи - которые не могут быть представлены вашей кодовой страницей "ANSI".
Учитывая эти ограничения, это самый безопасный- и на будущее - всегда создавать сценарии PowerShell как UTF-8 с спецификацией .
(В качестве альтернативы вы можете использовать UTF-16 (который всегда сохраняется с * 1075)* BOM), но это увеличивает размер файла, если вы в основном используете символы ASCII / ANSI, что, скорее всего, в сценарии PSs).
Как заставить Visual Studio Code создавать файлы UTF-8 с BOM для сценариев PowerShell по умолчанию :
Примечание. Для версии v1.11.0 расширение PowerShell для VSCode все еще требуется следующее, но не существует предложения сделать расширение default PowerShell для файлов UTF-8 с спецификацией на GitHub .
Добавьте следующее в файл settings.json
(из палитры команд ( Ctrl + Shift + P), введите settings
и выберите Preferences: Open Settings (JSON)
):
"[powershell]": {
"files.encoding": "utf8bom"
}
Обратите внимание, что параметр преднамеренно ограничен PowerShell только для файлов , потому что выне хотел бы, чтобы для всех файлов по умолчанию использовалось UTF-8 с спецификацией , учитывая, что многие утилиты на платформах Unix не ожидают и не знают, как обрабатывать такую спецификацию.
[1] В отсутствие спецификации Windows PowerShell по умолчанию определяет кодировку текущей кодовой страницы "ANSI" системы, как определенопод редакцией устаревшей локали системы;например, в западноевропейских культурах Windows-1252.