PowerShell如何在解析的JSON中附加更多数据?

时间:2017-12-17 18:36:24

标签: json powershell

我想使用PowerShell版本5为我解析的JSON添加一些内容。我的代码:

  $file = 'C:\test\data.json'
  $json = Get-Content -Raw $file; 
  $jsonparsed = ConvertFrom-Json -InputObject $json;

  $machineName = [System.Environment]::MachineName;

 $blockcvalue =@"
    {
    "id": "$machineName"
    }
    "@

我的JSON数据: -

{
  "path": "C:\\test\\Storage",
  "fs": "C:\\test\\fs",
  "serverAddresses": [
    "http://localhost:5000"
  ],
  "serverCertificate": {
    "name": "My",
    "location": "location"
  }
}

我想将一些数据添加到我的JSON中,如下所示: -

{
  "path": "C:\\test\\Storage",
  "fs": "C:\\test\\fs",
  "serverAddresses": [
    "http://localhost:5000"
  ],
  "serverCertificate": {
    "name": "My",
    "location": "location"
  },
  "id": "MyComputerName"
}

如何在我的JSON数据中附加“id”:“MyComputerName”?

1 个答案:

答案 0 :(得分:1)

使用Convertfrom-JSON时,您使用JSON文件提供的属性和值构建了PSCustomObject。从现在开始,您不会修改JSON或文本,而是修改PowerShell对象。

要向对象添加成员,您可以使用Add-Member。在您的示例中:

Add-Member -InputObject $jsonparsed -MemberType NoteProperty -Name id -Value $env:COMPUTERNAME

现在您修改了对象,您可能希望将其恢复为JSON。您可以使用Convertto-JSON

执行此操作
$jsonparsed | ConvertTo-Json | Out-File 'C:\test\newdata.json'