如何在Powershell中使用if条件在json文件中写入值?

时间:2019-09-16 08:16:34

标签: json powershell

我正在尝试使用Powershell在密钥对json文件中添加值。我收到一个错误。需要有关PS脚本的一些指导。

Powershell 5.1版本和其中带有密钥对的json文件。

MYJSON文件:

  {   "Theme":{"Res_List":  {
                    "Method":  "POST",
                     "Name":""}}}

PowerShell脚本:


$file_path="C:\Users\RelativeConfig.json"

$json = Get-Content $file_path | Out-String | ConvertFrom-Json

$timestamp = Get-Date -Format ddMMHHmm

$namevalue = 'resource'+$timestamp+'e3'
echo $namevalue ##prints resource16sep2019 I want this to write in json as value for Name Key
$files = $json | Get-Member -MemberType Properties | Select-Object - ExpandProperty Name

$result = Foreach ($file in $json)
{
    if ($file.Name -eq "Name") { $file.Value = $namevalue}
}
$result | ConvertTo-Json | Set-Content $json                                         

错误:

没有错误,但json没有用新值更新。

预期:

{   "Theme":{"Res_List":  {
                    "Method":  "POST",
                     "Name":"resource16sep2019 "}}}

实际:

  {   "Theme":{"Res_List":  {
                    "Method":  "POST",
                     "Name":""}}}

1 个答案:

答案 0 :(得分:2)

要更新json中的值,您可以执行以下操作

$bucket_name = "resource16sep2019"    ## I want this to write in json as value for Name Key

$json.Theme.Res_List.Name = $bucket_name

它将用JSON中的$bucket_name值直接替换Name值。

如果要将其写入相应的文件,请使用以下命令,

$json | ConvertTo-Json -depth 32| set-content $file_path

希望有帮助!干杯