3

考虑以下 PowerShell 代码:

@"


"@.GetEnumerator() | %{[int]$_}

在我的电脑上这个输出

13
10

它们分别是用于回车和换行的 ASCII 控制字符的十进制表示。

在 AppVeyor 上执行的相同代码只输出一个数字

10

换句话说,PowerShell 在此处字符串中使用的字符之间似乎存在差异。我希望源与输出此处字符串中的单个字符的环境[System.Environment]::newlineAppVeyor环境相同,输出

13
10

[System.Environment]::newline. [System.Environment]::newline似乎不是此处字符串中换行符的来源。

4

1 回答 1

1

PowerShell 脚本本质上是一个字符串。并且它已经必须使用"`n""`r`n"进行行分隔。因此,如果 PowerShell 字符串文字跨多行,则 PowerShell 解析器将在此字符串文字中使用的行分隔符保留为字符串文字值的一部分。

例如这个:

"'a`nb`r`nc'.GetEnumerator() | %{[int]`$_}" | Set-Content .\Test.ps1
.\Test.ps1

将打印:

97
10
98
13
10
99
于 2017-10-06T22:12:13.937 回答