2017-05-07 4 views
1

Wie durchlaufe ich alle Elemente in einer JSON-Datei? Der aktuelle Code schreibt nur alle Namen auf eine große Linie:Durch die JSON-Datei mit PowerShell scrollen

Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json | ForEach-Object { 
    Write-Host $_.Name 
} 

JSON-Datei:

[ 
    { 
     "Name":"EnableRetry", 
     "Description":"Enable retry for Webservice Task", 
     "Type":"Boolean", 
     "Sensitive":false, 
     "Value":true 
    }, 
    { 
     "Name":"FolderStageFiles", 
     "Description":"Location of stage files", 
     "Type":"String", 
     "Sensitive":false, 
     "Value":"d:\\sources\\" 
    }, 
    { 
     "Name":"FtpPassword", 
     "Description":"Secret FTP password", 
     "Type":"String", 
     "Sensitive":true, 
     "Value":"Welcome1" 
    } 
] 
+1

Duplizieren von http : //stackoverflow.com/questions/33520699/iterating-through-json-file-powershell? –

Antwort

1

Ich landete Select-Object und einen ForEach-Object:

$JSON = Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json 

$JSON | Select-Object -Property Name,Description,Type,Sensitive,Value | ForEach-Object { 
    Write-Host $_.Name $_.Value 
} 
+0

Sieht für mich eine gute Lösung aus . Entschuldigung dafür, dass ich nicht zu dir zurückkomme. –

+0

Kein Problem, ich nahm Ihren Code als Basis und das hat mir geholfen ... Wird den vollständigen Code auf meinem Blog in ein paar Tagen veröffentlichen. – Joost

+0

Hier ist der vollständige Code, wenn jemand es kopieren möchte: http://microsoft-ssis.blogspot.com/2017/05/import-and-export-ssis-catalog.html – Joost

1

Wenn Sie dies tun:

$JSON = Get-Content -Raw -Path c:\temp\Environments.Generic.json | ConvertFrom-Json 

$JSON wird ein Powershell-Objekt sein, das enthält eine Sammlung von Objekten mit allen in Ihrer JSON-Datei definierten Eigenschaften.

Geben Sie $JSON an der Konsole ein und Sie werden den Inhalt dieses Objekts sehen.

Um bestimmte Eigenschaften für bestimmte Elemente in der Sammlung zugreifen Sie (zum Beispiel) tun könnten:

$JSON | Where {$_.Name -eq 'FolderStageFiles'} | Select -ExpandProperty Value 
+0

Gibt es etwas für das Durchlaufen des Satzes, weil ich die Werte der JSON-Datei nicht kenne ... nur die Struktur (Name, Beschreibung, Typ, Empfindlich und Wert). Ich möchte diese Datensätze durchlaufen und diese Werte zu einer SSIS-Umgebung wie http://microsoft-ssis.blogspot.com/2015/08/deploying-environments-and-variables.html hinzufügen. – Joost

Verwandte Themen