如何从powershell读取json文件并提取数组列表

如何从powershell读取json文件并提取数组列表,json,powershell,Json,Powershell,如果更改标志为true,则需要数组中的名称,例如list=[kernel,activemq] 如何通过PowerShell提取数据 [ { "name" : "kernel", "change_flag" : "TRUE", "localpath" : "setupfiles\\controlroom\\kernel.jar", "unpack" : "FALSE",

如果更改标志为true,则需要数组中的名称,例如list=[kernel,activemq] 如何通过PowerShell提取数据

[
    {
        "name"           : "kernel",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\kernel.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "activemq",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\activemq.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "ignite-server",
        "change_flag"    : "FALSE",
        "localpath"      : "setupfiles\\controlroom\\ignite-server.jar",
        "unpack"         : "FALSE",
        "filename"       : []
    }
]

使用
ConvertFrom-Json
cmdet将文本转换为Json,然后可以使用
Where-Object
cmdlet进行过滤:

$json = 
@'
[
    {
        "name"           : "kernel",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\kernel.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "activemq",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\activemq.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "ignite-server",
        "change_flag"    : "FALSE",
        "localpath"      : "setupfiles\\controlroom\\ignite-server.jar",
        "unpack"         : "FALSE",
        "filename"       : []
    }
]
'@

($json | ConvertFrom-Json) | Where-Object change_flag -eq 'TRUE' | Select-Object -ExpandProperty name

只有当change_flag=true时,我才需要创建列表并添加每个名称的值,我才采用我的答案。请试一试