EscapeDataString在Powershell IDE和Powershell控制台之间具有不同的行为

时间:2017-01-31 13:52:24

标签: powershell escaping powershell-ise

我对这个问题有点困惑!我正在构建一个更大的脚本,它在ISE中工作,但不在PowerShell控制台中工作。我设法将其跟踪到[System.Uri] :: EscapeDataString函数,该函数在不同的环境之间似乎表现不同,例如在我的powershell console()' &安培; !没有被转义,在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()

Screenshot

谢谢!

1 个答案:

答案 0 :(得分:2)

根据source[System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null)

,这是差异

我将答案标记为社区维基,因为它出现在评论中,导致问题出现在搜索未答复的问题中。