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,因为它出现在评论中,导致问题出现在搜索未回答问题的过程中。
我对这个问题有点困惑!我正在构建一个更大的脚本,它在 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,因为它出现在评论中,导致问题出现在搜索未回答问题的过程中。