目前我正在尝试使用正在使用cURL的API,我正在尝试将其转换为PowerShell。
目前该公司给出的例子是使用cURL:
$ 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
我感到困惑的部分是如何将-Body请求格式化为类似于:
'{"ids": ["ldt:ddaab9931f4a4b90450585d1e748b324:148124137618026"]}'
LDT部分是我通过一个数组而不是ldt我试图调用一个变量,如$ detect,但我无法。
答案 0 :(得分:2)
你可以创建一个哈希表并转换为json:
-body (@{ids = ($detections)} | ConvertTo-Json)
或者如果检测是一个数组,您可以省略()
周围的$detections
答案 1 :(得分:1)
您无法使用变量,因为您使用的是单引号'
字符串,它不解释变量或转义序列。您需要使用双引号"
字符串。由于你的字符串包含双引号,你需要使用PowerShell的转义字符来转义它们,这是反引号`
。
"{`"ids`": [`"ldt:$detections`"]}"
这可能不是你想要的;你可能想要将数组序列化为JSON,在这种情况下你应该使用4c74356b41's answer;即:使用所需的值创建对象,然后在运行时将其转换为JSON。这不容易出错。
答案 2 :(得分:0)
您可以在JSON主体的外部使用双引号字符串,然后您可以包含变量:
Invoke-WebRequest -Method Post -Uri "{'ids': ['ldt:$detections']}" -Body -Credential 'whatever credentials' |
ConvertFrom-Json | Select -ExcludeProperty resources