2016-08-02 73 views
1

如果對象創建代碼是單行的,我能夠傳遞動態json對象。動態Json變量來調用Invoke-Restmethod

Invoke-RestMethod -ContentType "application/json" -Method Post -Body '{ "name" : "azurefunctionapp2email", "appname": "Applicationnamehere", "requestedBy" : "requestedby", "reqdate" : "requestdate", "status" : "Successfully Deployed", "AppsCount" : "2" }' ` 
    -Uri 「https://implementurihere" 

由於在現實世界中的動態JSON對象需要更長,我分隔新線and referenced in the above as below. But new line shift使JSON打破創建。我試圖管ConvertTo-Json函數,然後發現輸出持有「`\ r \ n」越來越介紹:

$body = '{ "name" : "azurefunctionapp2email", ` 
     "appname": "Applicationnamehere", ` 
     "requestedBy" : "requestedby", ` 
     "reqdate" : "requestdate", 
     "status" : "Successfully Deployed", 
     "AppsCount" : "2" }' ` 

Invoke-RestMethod -ContentType "application/json" -Method Post -Body $body ` 
    -Uri 「https://implementurihere" 

注:以上的作品,如果$body是單行。

如何在這樣的場景中創建動態json,長文件和提要?

回答

2

您的示例不起作用,因爲最後一行包含反斜槓,您必須忽略它。

你可以使用一個here string來定義你的JSON,所以你並不需要通過一個反引號,以單獨的每一行:

$body = 
@' 
    { "name" : "azurefunctionapp2email", 
     "appname": "Applicationnamehere", 
     "requestedBy" : "requestedby", 
     "reqdate" : "requestdate", 
     "status" : "Successfully Deployed", 
     "AppsCount" : "2" } 
'@ 

你也可以考慮使用PowerShell的哈希表來定義您的對象,它將允許你可以在不需要格式字符串的情況下使用變量:

$bodyObject = @{ 
    name = 'azurefunctionapp2email' 
    appname = 'Applicationnamehere' 
    requestedBy = 'requestedby' 
    reqdate = 'requestdate' 
    status = 'Successfully Deployed' 
    AppsCount = '2' 
} 

$bodyObject | ConvertTo-Json 
+0

是的,非常感謝。 –