У меня есть голова, и я не уверен, как решить эту проблему.
Я ищу просвещенного человека, который бы знал, что это такое.
Давайте начнем с центральной части этого запроса, этого простого фрагмента кода.
Function New-Thingy {
[CmdletBinding()]
Param(
[Parameter(ValueFromPipeline = $true)]$testing
)
# Tried playiing with encoding but it didn't do anything.
# $Encoding = [System.Text.Encoding]::Default
# [Console]::OutputEncoding = $Encoding
# [Console]::InputEncoding = $Encoding
Write-Host $testing
}
'options — test' | New-Thingy
Обратите внимание, что проблема не возникает в Powershell ISE, но возникает в VSCODE и Powershell (путем вызова сценария ps1, содержащего этот код).
Как из кода VS, так и из Powershell, запуск сценария дает следующий вывод:
параметры - тест вместо
Вывод должен быть: Опции - тест
Использование F8 в этой строке кода впоследствии приводит к правильному выводу, но выполнение F5 всегда выдает неправильную кодовую страницу.
Кроме того, использование расширяемой строки вместо одинарных кавычек приводит к появлению следующего сообщения об ошибке:
+ "options — test" | New-Thingy
+ ~~~~~~~~~~~~~~
The string is missing the terminator: ".
- Как получить правильный вывод?
Я попытался изменить кодировку ввода / вывода консоли, но она ничего не меняет
- Что происходит с расширяемой строкой и есть ли способ предотвратить это?
Опять же, Powershell ISE выполняет работу правильно, выдает правильный вывод и не выдает никаких ошибок при использовании расширяемой строки.
Обычная консоль PowerShell делает и код VS тоже.
Я продолжаю искать ответ, но я должен быть администратором. Я немного растерялся здесь.