【发布时间】:2021-02-28 04:40:45
【问题描述】:
从this post 我了解到我可以使用 [Regex]::Escape() 来转义字符串变量中的所有the commonly escaped characters。问题是我将使用包含 & 字符的路径,然后在 URL 中使用该路径进行 RestAPI 调用,并且该转义方法不会转义 & 字符。
当路径包含 & 时,API 将其解释为 URL 中的运算符并且未正确解析:
$MyPath = "\\Server\Share\Something & Something Else"
$MyURL= "http://localhost/Address/to/APIResource/"
Invoke-RestMethod -Method Get -Uri ("$MyURL" + "?path=$MyPath") -UseDefaultCredentials
?path=$MyPath 是问题所在,因为 $MyPath 包含 & 因此将不起作用。如何转义 $MyPath 中的 & 字符以使其与 RestAPI 一起使用?
【问题讨论】:
-
对于 URI/URL 项目,我认为你应该使用 ... Uri.EscapeUriString(String) Method (System) | Microsoft Docs — docs.microsoft.com/en-us/dotnet/api/…
-
我早上先看看这个,看看它是否有效,非常感谢!
-
不客气!祝你好运... [咧嘴一笑]
-
我试过这个,似乎它剥离了字符的字符串而不是转义它们? Mathias 发布的答案似乎只是将 URL 修改为具有字符编码而不是空格和实际字符,所以我会尝试一下。如, [URI]::EscapeDataString("\\Server\Share\Something & Something") 变为 %5C%5CServer%5CShare%5CSomething%20%26%20Something ,因此看起来确实正确。编辑:更正,我一定做错了什么,你的建议确实给了我一个结果,但没有改变 & 所以它仍然被解释为 RestAPI 中的一个命令。
-
看起来
Mathias R. Jessen为您找到了正确的版本。很高兴看到他的解决方案可以满足您的需要... [grin]
标签: powershell rest escaping