2017-06-13 5 views
1

現在、私はcURLを利用しているAPIを使用しようとしており、PowerShellに変換しようとしています。powershell内で投稿要求を正しく使用する方法

現在、この会社によって与えられた例では、カールを使用することですされています。今、私は、以下のものを使用して呼び出し、WebRequestクラスのメソッドを使用して、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 -Method Post -Uri $site -Body -Credential 'whatever credentials' | 
ConvertFrom-Json | Select -ExcludeProperty resources 

私が混乱していますが、一部のようなものであることを-body要求をフォーマットする方法である:

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

ここで、LDTパーツは配列を経由しているので、ldtの代わりに$ detectsなどの変数を呼び出そうとしていますが、私はできません。あなただけのハッシュテーブルを作成し、JSONに変換することができ

答えて

2

-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に変換します。これは誤りが起こりにくい。

関連する問題