Invoke-RestMethod将反斜杠转换为斜杠

时间:2017-04-06 10:33:31

标签: rest powershell

我想调用REST API传递包含反斜杠字符的参数。

API需要api/test/<app_name>/<user_name>之类的路由,例如我想将domain\login作为user_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

带有Invoke-RestMethod标记的-Verbose输出显示PowerShell 正在将反斜杠转换为斜杠,之后我从REST API获取404(其中)预计因为路线不匹配):

VERBOSE: GET http://localhost:5555/api/test/App Name/Domain/login with 0-byte payload
Invoke-RestMethod :
404 Not Found

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

以下是我的$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

1 个答案:

答案 0 :(得分:0)

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

$RawUri = 'http://...'

您应该使用//代替/

然后使用您的代码并将文本替换为新变量。