卷曲到PowerShell-方括号中的值

卷曲到PowerShell-方括号中的值,powershell,curl,Powershell,Curl,我一直在努力进行另一个cURL到PowerShell的转换,特别是使用方括号中的值 背景:我将大约1500行代码转换成一个脚本,该脚本接收CSV导入文件,使用它,验证它,然后将其转换为一系列API调用,以自动化手动完成的过程。我这样做是为了给自己一个学习的机会,因为我以前从未做过API工作 我有这个cURL命令(来自邮递员): 我的斗争是围绕“GroupId”的方括号 要将其转换为PowerShell,我已执行以下操作: $URL = "https://example.com" $Body =

我一直在努力进行另一个cURL到PowerShell的转换,特别是使用方括号中的值

背景:我将大约1500行代码转换成一个脚本,该脚本接收CSV导入文件,使用它,验证它,然后将其转换为一系列API调用,以自动化手动完成的过程。我这样做是为了给自己一个学习的机会,因为我以前从未做过API工作

我有这个cURL命令(来自邮递员):

我的斗争是围绕“GroupId”的方括号

要将其转换为PowerShell,我已执行以下操作:

$URL = "https://example.com"
$Body = @{
    'data' = @{
        'CID'              = $CustomerID;
        'GroupId'          = $GetGroupID2
        }
}

$CurlArgument = '-X', 'PATCH',
'-H', 'Content-Type: application/json',
$URL1,
'-H', 
$AuthBearer,
'--retry', '2',
'--retry-delay', '3',
'--retry-connrefused',
'-d', 
(($Body | ConvertTo-Json) -replace '"', '\"')

Write-Host "$Section cURL command took" ("{0:n1}" -f (Measure-Command {$PatchGroupResponse = & $CURLEXE @CurlArgument}).TotalSeconds) "Seconds"  -ErrorAction SilentlyContinue
现在,PowerShell“讨厌”包含“GroupID”的方括号,因此我做了以下操作(假设$GetGroupID包含31(不带引号)。我在我的脚本前面得到了这一点,并将其保存到变量中):

$GetGroupID2现在包含:[31],但是当我转换为Json时,我的$GetGroupID2周围会有额外的引号,[31]会变成“[31]”,我假设是通过-replace命令,但我不知道为什么/如何或如何停止它

我的@curl参数如下所示:

-X
PATCH
-H
Content-Type: application/json
https://example.com
-H
Authorization: Bearer 1234567890
--retry
2
--retry-delay
3
--retry-connrefused
-d
{
    \"data\":  {
                 \"CID\":  1234,
                 \"GroupId\":  \"[31]\"
             }
   "data": {
       "CID": 1234,
       "GroupId": [
           31
       ]
   }
我对服务器的调用失败,原因是: {“缺少参数,参数名称=CID”}

从我看到的情况来看,除了GroupID“[31]”(应该是[31])周围的额外引号外,所有内容看起来都与cURL命令相同


有谁能告诉我为什么额外的引号出现在[31]的周围吗?

这样做:
$GetGroupID2='['+$GetGroupID+']
您正在创建一个字符串
[31]
,因此该值被
ConvertTo Json
cmdlet引用

事实上,它应该作为数组的单个元素输出,因此如果您这样做:

'GroupId' = @($GetGroupID2)
您正在强制将
GroupId
值设置为数组,因此输出如下:

-X
PATCH
-H
Content-Type: application/json
https://example.com
-H
Authorization: Bearer 1234567890
--retry
2
--retry-delay
3
--retry-connrefused
-d
{
    \"data\":  {
                 \"CID\":  1234,
                 \"GroupId\":  \"[31]\"
             }
   "data": {
       "CID": 1234,
       "GroupId": [
           31
       ]
   }

通过执行此操作:
$GetGroupID2='['+$GetGroupID+']'
您正在创建一个字符串
[31]
,因此该值由
ConvertTo Json
cmdlet引用

事实上,它应该作为数组的单个元素输出,因此如果您这样做:

'GroupId' = @($GetGroupID2)
您正在强制将
GroupId
值设置为数组,因此输出如下:

-X
PATCH
-H
Content-Type: application/json
https://example.com
-H
Authorization: Bearer 1234567890
--retry
2
--retry-delay
3
--retry-connrefused
-d
{
    \"data\":  {
                 \"CID\":  1234,
                 \"GroupId\":  \"[31]\"
             }
   "data": {
       "CID": 1234,
       "GroupId": [
           31
       ]
   }