[英]Powershell Yammer REST API POST syntax issue
關於使用Invoke-RestMethod傳遞變量的正確語法,我有一個新手問題。 這是代碼:
$Payloadjson = '{
"body": $tickets_stats,
"group_id" : "7837105",
"replied_to_id": $replied_to_id
}'
# echo $Payloadjson
Invoke-RestMethod -Method Post -Uri $uri_post -Header $Headers -Body $Payloadjson
問題是我無法從$ ticket_stats和$ replied_to_id獲取值。 我認為這是因為引用和大括號。
我試過在括號之前加一個雙引號,然后在其余部分單引號:我有變量值,但是Invoke-RestMethod出錯了。
如果您對如何傳遞變量有任何想法,將不勝感激。
提前致謝 :)
您可以使用與ConvertTo-Json cmdlet結合的hashtable
:
$tickets_stats = "ticket"
$replied_to_id = 123
$Payloadjson = @{
body = $tickets_stats;
group_id ="7837105";
replied_to_id = $replied_to_id;
} | ConvertTo-Json
$Payloadjson
輸出:
{
"body": "ticket",
"replied_to_id": 123,
"group_id": "7837105"
}
你也可以使用格式字符串(但我會使用hashtable
):
$Payloadjson = '{
"body": {0},
"group_id" : "7837105",
"replied_to_id": {1}
}' -f $tickets_stats, $replied_to_id
謝謝Jisaak,看起來它正在工作!
與此同時,我使用了另一種技巧,但你的解決方案更優雅:
$Payloadjson = '{
"body": *$tickets_stats*,
"group_id" : 4783115,
"replied_to_id": *$replied_to_id*
}'
# Formatting Payload
$Payloadjson = $Payloadjson -replace '[*]',"'"
#Get value from variables
$Payloadjson = $ExecutionContext.InvokeCommand.ExpandString($Payloadjson)
$Payloadjson = $Payloadjson -replace "'",'"'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.