在ForEach循环中使用powershell输出JSON



朋友们!开始使用powershell并遇到问题。我需要在循环中以JSON格式的字符串输出一些变量的值。为此,我使用以下代码:

.....
foreach ($value in $memoryLast5min)
{
$valueInt = [convert]::ToInt32($value, 10);   
if ($valueInt -ge $500MB)
{
$index = [array]::IndexOf($memoryLast5min, $value);        
$JSON += @{'problemUsers' = @(
@{
"userName"       = $userNames[$index]
"memoryLast5min" = $value
"readLast5min"   = $readLast5min[$index]
"writeLast5min"  = $writeLast5min[$index]
} 
) 
} | ConvertTo-JSON;
}
}
.....
return $JSON

在变量$JSON中,我得到以下结果:

{
"problemUsers":  [
{
"userName":  "User1",
"writeLast5min":  29,
"memoryLast5min":  181,
"readLast5min":  25
}
]
}{
"problemUsers":  [
{
"userName":  "User2",
"writeLast5min":  80,
"memoryLast5min":  396,
"readLast5min":  74
}
]
}{
"problemUsers":  [
{
"userName":  "User3",
"writeLast5min":  32,
"memoryLast5min":  169,
"readLast5min":  29
}
]
}

但我需要这个结果:

{
"problemUsers":  [
{
"userName":  "User1",
"writeLast5min":  29,
"memoryLast5min":  181,
"readLast5min":  25
},
{
"userName":  "User2",
"writeLast5min":  80,
"memoryLast5min":  396,
"readLast5min":  74
},
{
"userName":  "User3",
"writeLast5min":  32,
"memoryLast5min":  169,
"readLast5min":  29
}
]
}

请帮我修复代码

构建一个数据结构完成后,转换为JSON。

$data = [pscustomobject]@{
problemUsers = @()
}
foreach ($value in $memoryLast5min)
{
$valueInt = [convert]::ToInt32($value, 10);   
if ($valueInt -ge $500MB)
{
$index = [array]::IndexOf($memoryLast5min, $value) 
$data.problemUsers += @{
userName       = $userNames[$index]
memoryLast5min = $value
readLast5min   = $readLast5min[$index]
writeLast5min  = $writeLast5min[$index]
}
} 
}
$json = $data | ConvertTo-Json

最新更新