【发布时间】:2017-01-31 13:52:23
【问题描述】:
我对这个问题有点困惑!我正在构建一个更大的脚本,它可以在 ISE 中运行,但不能在 powershell 控制台中运行。我设法将其追踪到 [System.Uri]::EscapeDataString 函数,该函数似乎在不同环境之间表现不同,例如在我的 powershell 控制台 () ' & !没有被转义,而在 IDE 中它们都被转义了。
我错过了什么吗?
我的测试代码:
[System.Uri]::EscapeDataString("/?:@%!$&'/*+,;=()")
ISE 输出:
%2F%3F%3A%40%25%21%24%26%27%2F%2A%2B%2C%3B%3D%28%29
Powershell 控制台输出:
%2F%3F%3A%40%25!%24%26'%2F*%2B%2C%3B%3D()
谢谢!
【问题讨论】:
-
你的 PowerShell 版本是什么。好奇地检查两个外壳,以确保您的快捷方式上没有使用开关。 可能这是一个错误,但需要确定版本。
-
可在 Windows 10 和 Windows 7 上的 PowerShell 5 上重现。
-
@Matt 5.1.14393.693 在两个控制台上都一样
-
这里有区别:
[System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null). -
@PetSerAl 很有趣,除非我遗漏了什么,否则我在任何地方都看不到这个 quirksversion 记录
标签: powershell escaping powershell-ise