2017-06-13 56 views
1

目前我正在嘗試使用正在使用cURL的API,並試圖將其轉換爲PowerShell。如何在PowerShell中正確使用發佈請求

目前由該公司給出的是使用捲曲的例子是:

$ curl -X POST -u "youruser:yourkey" -H "Content-Type: application/json" 
"https://falconapi.crowdstrike.com/detects/entities/summaries/GET/v1" -d 
'{"ids": ["ldt:ddaab9931f4a4b90450585d1e748b324:148124137618026"]}' 

現在我想通過使用Invoke-WebRequest的方法使用PowerShell中轉換下面這樣的:

Invoke-WebRequest -Method Post -Uri $site -Body -Credential 'whatever credentials' | 
ConvertFrom-Json | Select -ExcludeProperty resources 

我越來越糊塗上的部分是如何格式化 - 身體的要求是類似的東西:

'{"ids": ["ldt:ddaab9931f4a4b90450585d1e748b324:148124137618026"]}' 

其中的LDT部分是我正在通過一個數組,所以而不是ldt我試圖調用一個變量,如$檢測,但我無法。

回答

2

你可以只創建一個哈希表,並轉換成JSON:

-body (@{ids = ($detections)} | ConvertTo-Json) 

,或者如果檢測是一個數組,你可以忽略周圍的外()周圍$detections

0

你可以使用雙引號中的字符串你的JSON正文,然後你可以包含變量:

Invoke-WebRequest -Method Post -Uri "{'ids': ['ldt:$detections']}" -Body -Credential 'whatever credentials' | 
    ConvertFrom-Json | Select -ExcludeProperty resources 
1

你不能使用變量,因爲你是我們單引號'字符串,它不解釋變量或轉義序列。您需要使用雙引號"字符串。由於您的字符串中包含雙引號,因此您需要使用PowerShell的轉義字符將它們轉義出來,這是反斜槓`

"{`"ids`": [`"ldt:$detections`"]}" 

雖然這可能不是你想要的;您可能想要將數組序列化爲JSON,在這種情況下,您應該使用4c74356b41's answer;即:使用所需的值創建一個對象,然後在運行時將其轉換爲JSON。這是更不容易出錯的。

相關問題