从Powershell读取JSON

从Powershell读取JSON,json,powershell,virtual-machine,Json,Powershell,Virtual Machine,我试图读取存储在VM notes中的JSON数据。下面是我执行的获取VM注释的命令 Get-VM testbox |format-list Notes 输出是 Notes : { "Program": "AAA", "Project": "BBBB" } 我想把程序的值读入一个变量。我该怎么做呢?完全未经测试(目前无法测试),但类似于: Get-VM testbox | Select-Object -ExpandProper

我试图读取存储在VM notes中的JSON数据。下面是我执行的获取VM注释的命令

Get-VM testbox |format-list Notes
输出是

Notes : {
            "Program":  "AAA",
            "Project":  "BBBB"
        }
我想把程序的值读入一个变量。我该怎么做呢?

完全未经测试(目前无法测试),但类似于:

Get-VM testbox | Select-Object -ExpandProperty Notes | ConvertFrom-Json

您的json无效,如果是,则可以:

 (Get-VM -VMName TestBox).notes | ConvertFrom-Json
有效的Json:

{
    "Notes":
    {
        "Program":  "AAA",
        "Project":  "BBBB"
    }
}

使用
convertfromjson
解析
notes
-属性中的JSON值。我会将转换后的注释存储在一个变量中,以防以后需要访问
Project
或json的另一部分。尝试:

$vm = Get-VM testbox
$notes = $vm.Notes | ConvertFrom-JSON
$mynewvar = $notes.program

如果将
Format List
传递给
ConvertFrom Json
将不起作用,因为传递的是Format对象而不是Jsonobject@Dave完全正确。。。我已编辑将其更改为
选择对象
。。。仍然无法测试它,但它在理论上应该可以工作:-)您需要使用
选择对象-ExpandProperty Notes
否则您将得到一个名为Notes的单一属性的对象,而不是Notes属性的字符串值。我知道我仍然有问题:-),谢谢@Dave,修复了JSON是有效的。。至少从Json转换过来的
是快乐的。
注释:
部分是PowerShell对象在consle中使用列表视图(如
格式列表
)显示时的属性名称。他的JSON notes值以花括号开始。我看,我似乎误解了他的问题的这一部分。谢谢你的帮助,这对我很有用$test=(Get VM-VMName TestBox).notes | ConvertFrom Json$test.program如何为托管在执行脚本的机器上的虚拟机获取此值$vm=从远程计算机获取vm testbox dosent工作。我需要使用调用命令,嗯?首先,您询问如何在本地使用它(上面的代码已经这样做了),然后讨论远程处理。你需要什么?要查询远程服务器,请使用
$vm=Get vm-Name“testbox”-ComputerName“someHyperVServer”