web-dev-qa-db-ja.com

PowerShellを使用してJSONファイルを更新する方法

私は1つのjsonファイルを持っていますmytest.json以下のようにPowerShell scriptを使用して値を更新したい

update.json

{
    "update": [
        {
            "Name": "test1",        
            "Version": "2.1"
        },
        {
            "Name": "test2",        
            "Version": "2.1"
        }   
    ]
}

if Name=="test1" I want to update Version= "3"を使用してPowerShellスクリプトを記述したいのですが、パラメーターを使用してどのように実行できますか?

27
Neo

ここに方法があります:

$a = Get-Content 'D:\temp\mytest.json' -raw | ConvertFrom-Json
$a.update | % {if($_.name -eq 'test1'){$_.version=3.0}}
$a | ConvertTo-Json -depth 32| set-content 'D:\temp\mytestBis.json'

@FLGMwtと@mikemaccanaによれば、ConvertTo-Json with -depth 32デフォルトの深さの値は2であり、2を超えるオブジェクトの場合、オブジェクトに関係なくクラス情報を受け取るためです。

65
JPBlanc