在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","readLast5min":  25
                         },{
                             "username":  "User2","readLast5min":  74
                         },{
                             "username":  "User3","readLast5min":  29
                         }
                     ]
}

请帮我修复代码

hjh198966 回答:在ForEach循环中使用Powershell进行JSON输出

建立数据结构。 完成后,转换为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
本文链接:https://www.f2er.com/3151024.html

大家都在问