无法在powershell中获取数组列表中的数组到json



我正在尝试编写一个PowerShell脚本,将返回我一个JSON…这是我所能得到的。

$stepBase = @{}
$wizardDataArray = @{}
$stepTypeData =@{}
$step = New-Object System.Collections.ArrayList
$wizardData = @{"mode"="Add"; "resourceName"="basicServer";
"serverName"="demoServer"; "serverAddress"="xyz.abc.info";
"activeDbCatalog"="demodb";}
$stepData = @{"wizardType"="baseServer"; "wizardData"=$wizardData}
$stepTypeData = @{"stepType"="runWizard"; "stepData"=$stepData}
$step.Add(@{"steps"=$stepTypeData})

$stepBase.Add("steps", $step)
$stepBase | ConvertTo-Json -Depth 10

输出:

0
{
"steps": [
{
"steps": {
"stepData": {
"wizardType": "baseServer",
"wizardData": {
"serverAddress": "xyz.abc.info",
"activeDbCatalog": "demodb",
"resourceName": "basicServer",
"mode": "Add",
"serverName": "demoServer"
}
},
"stepType": "runWizard"
}
}
]
}

但这与我的需要不同……

{
"steps": [
{
"stepType": "runWizard",
"stepData": {
"wizardType": "baseServer",
"wizardData": {
"mode": "Add",
"resourceName": "basicServer",
"serverName": "demoServer",
"serverAddress": "xyz.abc.info",
"activeDbCatalog": "demoDb"
}
}
}
]
}

如果没有键"step",我无法将数组放入列表中。

试试这个…

$stepBase = @{}
$step = New-Object System.Collections.ArrayList
$wizardData = @{"mode"="Add"; "resourceName"="basicServer";
"serverName"="demoServer"; "serverAddress"="xyz.abc.info";
"activeDbCatalog"="demodb";}
$stepData = @{"wizardType"="demoServer"; "wizardData"=$wizardData}
$step.Add(@{"stepType"="runWizard"; "stepData"=$stepData})
$stepBase.Add("steps", $step)
$stepBase | ConvertTo-Json -Depth 10

那么如果您跳过最后一个分配并将$step转换为JSON会怎么样?像这样:

$wizardDataArray = @{}
$stepTypeData =@{}
$step = New-Object System.Collections.ArrayList
$wizardData = @{"mode"="Add"; "resourceName"="basicServer";
"serverName"="demoServer"; "serverAddress"="xyz.abc.info";
"activeDbCatalog"="demodb";}
$stepData = @{"wizardType"="baseServer"; "wizardData"=$wizardData}
$stepTypeData = @{"stepType"="runWizard"; "stepData"=$stepData}
$step.Add(@{"steps"=$stepTypeData})

$step | ConvertTo-Json -Depth 10