我正在嘗試在 PowerShell 中進行 API 呼叫。問題是該呼叫包含一個“$”,PowerShell 將其解釋為一個變數,并且它還包含一個看起來像這樣的真實變數:

有沒有辦法讓 $format 不被解釋,但 $foo 是?
(我需要 $foo 周圍的“”)
我已經通過將它分成兩個字串然后將它們加在一起來解決這個問題,但這對我來說似乎非常不穩定。
uj5u.com熱心網友回復:
我強烈建議您從多個部分構建您的 uri:
# define base uri
$baseUri = "http://foo.example/bar()"
# define individual query parameters
$queryParameters = [ordered]@{
'$format' = 'json'
'filter' = 'id eq "{0}"' -f $foo
}
# concatenate query parameters
$paramString = $queryParameters.GetEnumerator().ForEach({
$_.Key,$_.Value -join '='
}) -join '&'
# construct full URL from base parameter string
$apicall = $baseUri,$paramString -join '?'
周圍的'單引號$format將阻止任何變數擴展的嘗試。
文字"'s 通過也'用于定義字串格式模板,但隨后使用-f運算子(將$foo在應用之前擴展)保留在過濾器字串中。
這種方法顯然需要更多的源代碼,但它更容易維護 URI 引數。
如果除$foo值之外的所有內容都是靜態的,您還可以使用帶有字符的可擴展此處字串文字(@"而不是@')$,只需使用反引號將其轉義:
$apicall = @"
http://foo.example/bar()?`$format=json&filter=id eq "$foo"
"@
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429756.html
