Wie man ein JSON-Objekt in eine Datei in PowerShell schreibt

  1. PowerShell Benutzerdefinierte Objekte
  2. PowerShell JSON Objekt zu JSON String
  3. JSON-String in einer Datei mit ConvertTo-Json und Out-File speichern
  4. JSON-String in einer Datei mit ConvertTo-Json und Set-Content speichern
  5. JSON-String in einer Datei mit ConvertTo-Json und Add-Content speichern
  6. Fazit
Wie man ein JSON-Objekt in eine Datei in PowerShell schreibt

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:

PowerShell benutzerdefinierte Objekte 1

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:

PowerShell benutzerdefinierte Objekte 3

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 wie Default, EscapeNonAscii, EscapeHtml und DoNotEscape.

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:

JSON-Objekt in JSON-Zeichenfolge

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:

JSON-Zeichenfolge in einer Datei speichern

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

Verwandter Artikel - PowerShell JSON