Wie man ein JSON-Objekt in eine Datei in PowerShell schreibt
- PowerShell Benutzerdefinierte Objekte
- PowerShell JSON Objekt zu JSON String
-
JSON-String in einer Datei mit
ConvertTo-Json
undOut-File
speichern -
JSON-String in einer Datei mit
ConvertTo-Json
undSet-Content
speichern -
JSON-String in einer Datei mit
ConvertTo-Json
undAdd-Content
speichern - Fazit

PowerShell, eine robuste und vielseitige Skriptsprache, bietet leistungsstarke Werkzeuge zum Verwalten und Manipulieren von Daten. Wenn es darum geht, JSON (JavaScript Object Notation) Daten zu verarbeiten, bietet PowerShell effiziente Möglichkeiten, benutzerdefinierte Objekte in JSON-Strings zu konvertieren und anschließend in Dateien zu schreiben.
In diesem Artikel werden wir den Prozess der Umwandlung von PowerShell-Objekten in JSON-Strings und deren Speicherung in Dateien mit verschiedenen Cmdlets wie ConvertTo-Json
, Out-File
, Set-Content
und Add-Content
näher betrachten.
PowerShell Benutzerdefinierte Objekte
Das PSCustomObject
ist ein grundlegendes Element in PowerShell, das zur Definition benutzerdefinierter Objekte verwendet wird. Ein benutzerdefiniertes Objekt enthält typischerweise Eigenschaften und deren zugehörige Werte, wodurch eine strukturierte Möglichkeit zur Organisation von Daten geboten wird.
Neben der Erstellung benutzerdefinierter Objekte von Grund auf ist PowerShell auch versiert im Umgang mit und der Verarbeitung von JSON-Objekten.
Erstellen eines JSON Benutzerdefinierten Objekts
Lassen Sie uns damit beginnen, zu untersuchen, wie man ein JSON benutzerdefiniertes Objekt anhand einer Beispiel-JSON-Struktur erstellt. Wir werden diese JSON-Struktur in der Variablen $MyJsonVar
speichern.
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
Ausgabe:
In diesem Beispiel haben wir eine JSON-Struktur definiert, die Informationen über Früchte darstellt.
Umwandlung von JSON in ein PowerShell Benutzerdefiniertes Objekt
Um die JSON-Darstellung in ein PowerShell Benutzerdefiniertes Objekt umzuwandeln, verwenden wir das Cmdlet ConvertFrom-JSON
. Lassen Sie uns das neu erstellte JSON-Objekt der Variablen $MyJsonObject
zuweisen.
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
Das Cmdlet ConvertFrom-JSON
wandelt die JSON-Struktur in ein korrektes PSCustomObject
um.
Anzeigen des Erstellten PowerShell Benutzerdefinierten Objekts
Nun lassen Sie uns das neu erstellte PSCustomObject
anzeigen, das der ursprünglichen JSON-Struktur entspricht.
$MyJsonObject
Ausgabe:
Diese Befehle greifen auf die Preis- und Namenseigenschaften der im benutzerdefinierten Objekt definierten Frucht zu und zeigen sie an. So wurde bestätigt, dass wir ein korrektes PowerShell benutzerdefiniertes Objekt namens $MyJsonObject
erhalten haben.
PowerShell JSON Objekt zu JSON String
PowerShell bietet das Cmdlet ConvertTo-Json
, ein wertvolles Werkzeug, um ein bestehendes benutzerdefiniertes Objekt in einen JSON-String zu konvertieren. Dieser Prozess verwandelt das Objekt effektiv in eine einfache Textdarstellung im JSON-Format, die nach Bedarf weiter verwendet oder gespeichert werden kann.
Syntax des Cmdlets ConvertTo-Json
:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Das Cmdlet ConvertTo-Json
bietet mehrere optionale Parameter zur Anpassung des JSON-Konvertierungsprozesses. Hier ist eine Übersicht über diese Parameter:
-
-InputObject
: Dieser Parameter ist grundlegend, da er das benutzerdefinierte Objekt bezeichnet, das in einen JSON-String umgewandelt werden soll. Sie können das Objekt direkt an diesen Parameter übergeben. -
-Depth
: Dieser wichtige Parameter ermöglicht es Ihnen, die Anzahl der Ebenen im resultierenden JSON-String anzugeben. Die Tiefe gibt an, wie viele Ebenen von verschachtelten Objekten oder Arrays im JSON-String enthalten sind.Er darf jedoch mit Bedacht verwendet werden, da fehlerhafte Verwendung zum Verlust von Daten führen kann. Der Standardwert ist auf 2 gesetzt.
-
-Compress
: Dieser Parameter komprimiert den Ausgabe-JSON, indem er überflüssige Leerzeichen und Einrückungen entfernt, was zu einem kompakteren JSON-String führt. -
-EnumsAsStrings
: Wenn dieser Parameter verwendet wird, werden Enumerationswerte als Strings in der JSON-Ausgabe dargestellt, um die Kompatibilität mit Systemen zu gewährleisten, die möglicherweise keine numerischen Enumerationen gut verarbeiten.
-
-AsArray
: Wenn angegeben, formatiert dieser Parameter die Ausgabe als JSON-Array, selbst wenn das Eingangsobjekt kein Array ist. -
-EscapeHandling
: Dieser Parameter ermöglicht die Anpassung der Art und Weise, wie Sonderzeichen im JSON-String escaped werden, und bietet Optionen wieDefault
,EscapeNonAscii
,EscapeHtml
undDoNotEscape
.
Um die Verwendung des Cmdlets ConvertTo-Json
zu demonstrieren, betrachten wir das benutzerdefinierte Objekt im vorherigen Abschnitt ($MyJsonObject
):
Wir können ein benutzerdefiniertes Objekt problemlos an das Cmdlet ConvertTo-Json
weiterleiten. Wir können $MyJsonObject
durch die Pipe (|
) senden, um das benutzerdefinierte Objekt in einen JSON-String zu transformieren.
$MyJsonObject | ConvertTo-Json
Ausgabe:
Lassen Sie uns die Verwendung des Cmdlets ConvertTo-Json
weiter demonstrieren. Lassen Sie uns ein benutzerdefiniertes Objekt namens $AnotherJsonObject
betrachten:
$AnotherJsonObject = @{
Name = "John Doe"
Age = 30
IsActive = $true
Hobbies = @("Reading", "Gardening")
Address = @{
Street = "1234 Elm St"
City = "Anytown"
Country = "USA"
}
}
Um dieses Objekt in einen JSON-String zu konvertieren und die Ausgabe anzuzeigen, verwenden Sie den folgenden Befehl:
$AnotherJsonObject | ConvertTo-Json
Die Ausgabe dieser Transformation ist ein anschaulicher JSON-String, der das ursprüngliche benutzerdefinierte Objekt darstellt.
{
"Name": "John Doe",
"Age": 30,
"IsActive": true,
"Hobbies": [
"Reading",
"Gardening"
],
"Address": {
"Street": "1234 Elm St",
"City": "Anytown",
"Country": "USA"
}
}
Wie wir sehen können, zeigt die Ausgabe ein strukturiertes Objekt ($AnotherJsonObject
), das persönliche Informationen wie Name, Alter, Aktivitätsstatus, Hobbys und Adressdetails einer Person darstellt.
JSON-String in einer Datei mit ConvertTo-Json
und Out-File
speichern
Sobald Sie einen JSON-String mit dem Cmdlet ConvertTo-Json
in PowerShell erhalten haben, besteht der nächste logische Schritt darin, ihn in einer Datei für die spätere Verwendung oder zum Teilen zu speichern. Glücklicherweise bietet PowerShell mehrere Methoden, um dies zu erreichen, wobei eine der einfachsten die Verwendung von Out-File
ist.
Das Cmdlet Out-File
ist ein zuverlässiges Werkzeug, um den JSON-String in einer Datei zu speichern. Im Folgenden ein Beispiel, das zeigt, wie dies erreicht werden kann:
$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"
Ausgabe:
In diesem Beispiel steht $MyJsonObject
für die Variable, die den JSON-String enthält, der mit ConvertTo-Json
generiert wurde. Die Pipeline (|
) übergibt dann diesen JSON-String an Out-File
, um ihn in eine Datei zu schreiben.
Der Parameter -FilePath
gibt den Zielpfad für den JSON-String an. Ersetzen Sie einfach "D:\path\to\example.json"
durch den gewünschten Dateipfad, wo Sie den JSON-Inhalt speichern möchten.
Indem Sie Out-File
auf diese Weise verwenden, speichern Sie Ihre JSON-Daten effizient in einer Datei, sodass sie für zukünftige Verwendung oder zum Teilen zugänglich sind. Diese einfache, aber leistungsstarke Technik ist entscheidend für die effektive Verwaltung von JSON-Daten in einer PowerShell-Umgebung.
JSON-String in einer Datei mit ConvertTo-Json
und Set-Content
speichern
Eine weitere Möglichkeit, den JSON-String in einer Datei zu speichern, ist die Verwendung des Cmdlets Set-Content
. Das Cmdlet Set-Content
bietet eine einfache Möglichkeit, Daten in eine Datei zu schreiben, und ist eine geeignete Wahl zum Speichern eines JSON-Strings auf der Festplatte.
Das folgende Beispiel demonstriert diesen Prozess:
$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"
In diesem Beispiel ist $MyJsonObject
die Variable, die den JSON-String enthält, der mit ConvertTo-Json
generiert wurde. Die Pipeline (|
) übergibt diesen JSON-String an Set-Content
, um ihn in eine Datei zu schreiben.
Der Parameter -Path
gibt den Zielpfad für den JSON-String an. Ersetzen Sie einfach "D:\path\to\example.json"
durch den gewünschten Dateipfad, wo Sie den JSON-Inhalt speichern möchten.
JSON-String in einer Datei mit ConvertTo-Json
und Add-Content
speichern
Eine weitere Methode, die wir verwenden können, um einen JSON-String in einer Datei in PowerShell zu speichern, ist das Cmdlet Add-Content
, das es ermöglicht, den JSON-String an eine bestehende Datei anzuhängen. Im Folgenden ein Beispiel, das zeigt, wie dies erreicht werden kann:
$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"
In diesem Beispiel steht $MyJsonObject
für die Variable, die den JSON-String enthält, der mit ConvertTo-Json
generiert wurde. Die Pipeline (|
) übergibt diesen JSON-String an Add-Content
, um ihn an eine Datei anzuhängen, die durch den Parameter -Path
angegeben wird.
Der Parameter -Path
bezeichnet die Datei, an die der JSON-String angehängt wird. Ersetzen Sie einfach "D:\path\to\example.json"
durch den gewünschten Dateipfad, wo Sie den JSON-Inhalt anhängen möchten.
Das Cmdlet Add-Content
bietet eine praktische Möglichkeit, Inhalte zu einer Datei hinzuzufügen oder anzuhängen, ohne die vorhandenen Daten zu überschreiben. Dies ist besonders nützlich, wenn es um JSON-Strings geht, die im Laufe der Zeit aktualisiert oder erweitert werden müssen.
Fazit
Dieser Artikel hat den Prozess der Umwandlung von PowerShell-Objekten in JSON-Strings und deren Speicherung in Dateien mit dem Cmdlet ConvertTo-Json
, zusammen mit anderen Datei verwaltenden Cmdlets wie Out-File
, Set-Content
und Add-Content
demonstriert.
Durch die Nutzung dieser Werkzeuge können Benutzer JSON-Daten effizient verwalten, was eine optimierte Datenverwaltung, das Teilen und die Integration mit verschiedenen Anwendungen und Systemen ermöglicht.
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.