【发布时间】:2018-08-30 22:59:02
【问题描述】:
我有一个令人头疼的问题,我不确定如何解决这个问题。 我正在寻找一个开明的人,他会知道这是关于什么的。
让我们从这个询问的核心部分开始,这段简单的代码。
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 中,运行脚本会产生以下输出: 选项 - 测试代替
输出应该是:options — test
之后在该行代码上使用 F8 会产生正确的输出,但 F5 执行总是在错误的代码页上输出。
此外,使用可扩展字符串而不是单引号会产生以下错误消息:
+ "options — test" | New-Thingy
+ ~~~~~~~~~~~~~~
The string is missing the terminator: ".
- 如何获得正确的输出? 我尝试更改控制台输出/输入编码,但没有任何改变
- 可扩展字符串发生了什么问题,有什么方法可以防止它发生吗?
同样,Powershell ISE 可以正常工作,产生正确的输出,并且在此处使用可扩展字符串不会给出任何错误。
常规的 powershell 控制台和 VS 代码一样。
我正在继续寻找答案,但我必须管理我在这里有点迷路。
【问题讨论】:
标签: powershell