Mag*_*ism 3 rest powershell escaping
从这篇文章中我了解到我可以使用 [Regex]::Escape() 来转义字符串变量中所有常见的转义字符。问题是我将使用包含 & 字符的路径,然后在 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
Run Code Online (Sandbox Code Playgroud)
?path=$MyPath 是问题所在,因为 $MyPath 包含 & 因此不起作用。如何转义 $MyPath 中的 & 字符以使其与 RestAPI 一起使用?
我了解到我可以用来
[Regex]::Escape()转义字符串变量中所有常见的转义字符
现在你会发现这根本不是真的:)
[regex]::Escape() 仅转义那些可能被解释为.NET 正则表达式语法定义的转义序列的字符- 它是为该上下文而设计的,并且仅保证在该上下文中工作。
对于 URI 参数,您需要使用[uri]::EscapeDataString():
Invoke-RestMethod -Uri ("$MyURL" + [uri]::EscapeDataString("?path=$MyPath")) ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |