web-dev-qa-db-fra.com

Comment mettre à jour un fichier JSON à l'aide de PowerShell

J'ai un fichier json mytest.json comme ci-dessous, je veux mettre à jour les valeurs en utilisant PowerShell script

update.json

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

Je veux écrire un script PowerShell où if Name=="test1" I want to update Version= "3" Comment puis-je le faire en utilisant des paramètres?

27
Neo

Voici un moyen:

$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'

Selon @FLGMwt et @mikemaccana, j'améliore le ConvertTo-Json avec -depth 32 car la valeur de profondeur par défaut est 2 et pour un objet plus profond que 2, vous recevrez des informations sur la classe malgré les objets.

65
JPBlanc