Schreiben eines JSON-Objekts in eine Datei in PowerShell
- Benutzerdefinierte PowerShell-Objekte
- PowerShell-JSON-Objekt in JSON-String
- JSON-String in einer Datei speichern
PowerShell ist eine sehr leistungsfähige objektbasierte Sprache, mit der strukturierte Daten erstellt werden können. Daher ist es einfacher, damit zu arbeiten als mit reinem Text.
Benutzerdefinierte PowerShell-Objekte
Das PSCustomObject
ist die Basis für PowerShell-Objekte. Es enthält Eigenschaften und Werte.
Daher kann PowerShell auch mit JSON-Objekten umgehen.
Lassen Sie uns ein benutzerdefiniertes JSON-Objekt aus einem JSON-Beispiel erstellen. Wir haben der Variablen $MyJsonVar
einen JSON zugewiesen.
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
Ausgabe:
Wir müssen das eigentliche JSON-Objekt mit dem Cmdlet ConvertFrom-JSON
erstellen. Dadurch wird das echte PSCustomObject
erstellt.
Weisen wir das neu erstellte JSON-Objekt der Variablen $MyJsonObject
zu.
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
Lassen Sie uns das neu erstellte PSCustomObject
, ein JSON-Objekt, anzeigen.
$MyJsonObject
Ausgabe:
Sie können über seine Eigenschaften auf das JSON-Objekt zugreifen.
$MyJsonObject.ExampleJson.Fruit1.Price
$MyJsonObject.ExampleJson.Fruit1.Name
Ausgabe:
Es wurde also bestätigt, dass wir ein richtiges benutzerdefiniertes PowerShell-Objekt namens $MyJsonObject
erhalten haben.
PowerShell-JSON-Objekt in JSON-String
Das Cmdlet ConvertTo-Json
kann ein vorhandenes benutzerdefiniertes Objekt in eine JSON-Zeichenfolge konvertieren. Dies wird reiner Text im JSON-Format sein.
Syntax:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Alle oben genannten Parameter sind für das Cmdlet ConvertTo-Json
optional.
Der Parameter -Depth
kann die Anzahl der Ebenen im JSON-String angeben. Es ist ein wichtiger Parameter und muss sehr sorgfältig verwendet werden.
Die fehlerhafte Verwendung dieses Parameters kann zu Datenverlust führen. Der Standardwert ist 2.
Der Parameter -InputObject
gibt das benutzerdefinierte Objekt an, das in einen JSON-String konvertiert werden muss. Wir können ein benutzerdefiniertes Objekt einfach an das Cmdlet ConvertTo-Json
weiterleiten.
Wir können das $MyJsonObject
durch die Pipe (|
) senden, um das benutzerdefinierte Objekt in einen JSON-String umzuwandeln.
$MyJsonObject | ConvertTo-Json
Ausgabe:
JSON-String in einer Datei speichern
Es ist möglich, einen JSON-String mit PowerShell in einer Datei zu speichern. Wir können die JSON-String-Ausgabe an das Cmdlet Out-File
weiterleiten.
Es ist möglich, den Pfad anzugeben, in dem wir die .json
-Datei erstellen müssen.
$MyJsonObject | ConvertTo-Json | Out-File "D:\misc\example.json"
Der Pfad "D\misc\example.json"
kann variieren. Dadurch wird eine example.json
-Datei in der angegebenen Verzeichnisstruktur erstellt.
Ausgabe:
Das benutzerdefinierte JSON-Objekt wurde in einer example.json
-Datei im JSON-Format gespeichert.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.