调用RestMethod将反斜杠转换为斜杠

调用RestMethod将反斜杠转换为斜杠,rest,powershell,Rest,Powershell,我想调用一个RESTAPI,传递一个包含反斜杠字符的参数 API需要一个类似于API/test/的路由,例如,我希望将domain\login作为user\u name的值传递 我用PowerShell试过这个: $uri = [Uri]::EscapeUriString("http://localhost:5555/api/test/App Name/Domain\login") # now $uri = 'http://localhost:5555/api/test/App%20Name/D

我想调用一个RESTAPI,传递一个包含反斜杠字符的参数

API需要一个类似于
API/test/
的路由,例如,我希望将
domain\login
作为
user\u name
的值传递

我用PowerShell试过这个:

$uri = [Uri]::EscapeUriString("http://localhost:5555/api/test/App Name/Domain\login")
# now $uri = 'http://localhost:5555/api/test/App%20Name/Domain%5Clogin'
Invoke-RestMethod -Method Get -Uri $uri -Verbose
带有
-Verbose
标志的
Invoke RestMethod
的输出显示PowerShell正在将反斜杠转换为斜杠,之后我从REST API获得404(这是预期的,因为路由不匹配):

如何避免这种行为并使用带有编码反斜杠的路径?

以下是my
$PSVersionTable
变量的输出:

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14393.953
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14393.953
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

word应该用什么替换
/
也许您必须将其定义为常规字符串,然后将其转换为:

$RawUri = 'http://...'
这里您应该使用
/
而不是
/


然后使用代码并用新变量替换文本。

。可以在windows上100%复制此功能。在CentOS上,\被转换为
/
,但
%5C
保持
%5C
…是的,奇怪的是我显式地转义了它,它仍然被替换。您使用的是什么版本的PowerShell?我使用的是5.1,我的详细输出是
verbose:GEThttp://localhost:5555/api/test/App 名称/域%5使用0字节有效负载登录
,这表明它保留了反斜杠。@罗宾:我也在使用PS 5.1。我将用
$PSVersionTable
的内容更新这个问题,为了完整起见,我正在使用
psversion5.1.15063.0
buildversion10.0.15063.0
。稍新一点。
$RawUri = 'http://...'