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

bri*_*boy 8 powershell escaping powershell-ise

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

我错过了什么吗?

我的测试代码:

[System.Uri]::EscapeDataString("/?:@%!$&'/*+,;=()")
Run Code Online (Sandbox Code Playgroud)

ISE输出:

%2F%3F%3A%40%25%21%24%26%27%2F%2A%2B%2C%3B%3D%28%29
Run Code Online (Sandbox Code Playgroud)

Powershell控制台输出:

%2F%3F%3A%40%25!%24%26'%2F*%2B%2C%3B%3D()
Run Code Online (Sandbox Code Playgroud)

截图

谢谢!

Ric*_*nus 2

根据来源[System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null),这是区别:

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