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 出现错误。
如果您对如何传递变量有任何想法,我们将不胜感激。
提前致谢:)
您可以将 hashtable
与 ConvertTo-Json cmdlet 结合使用:
$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 "'",'"'
我有一个关于使用 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 出现错误。
如果您对如何传递变量有任何想法,我们将不胜感激。
提前致谢:)
您可以将 hashtable
与 ConvertTo-Json cmdlet 结合使用:
$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 "'",'"'