簡體   English   中英

Powershell Yammer REST API POST語法問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM