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

EscapeDataString having differing behaviour between Powershell IDE and Powershell console

我对这个问题有点困惑!我正在构建一个更大的脚本,它在 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()

谢谢!

根据 source,这是不同之处:[System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null)

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