Comment écrire un objet JSON dans un fichier en PowerShell

  1. Objets personnalisés PowerShell
  2. Objet JSON PowerShell en chaîne JSON
  3. Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Out-File
  4. Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Set-Content
  5. Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Add-Content
  6. Conclusion
Comment écrire un objet JSON dans un fichier en PowerShell

PowerShell, un langage de script robuste et polyvalent, fournit des outils puissants pour gérer et manipuler des données. En ce qui concerne la gestion des données JSON (JavaScript Object Notation), PowerShell offre des moyens efficaces de convertir des objets personnalisés en chaînes JSON et de les écrire ensuite dans des fichiers.

Dans cet article, nous examinerons le processus de conversion d’objets PowerShell en chaînes JSON et de leur sauvegarde dans des fichiers à l’aide de divers cmdlets tels que ConvertTo-Json, Out-File, Set-Content et Add-Content.

Objets personnalisés PowerShell

Le PSCustomObject est un élément fondamental dans PowerShell utilisé pour définir des objets personnalisés. Un objet personnalisé contient généralement des propriétés et leurs valeurs associées, fournissant un moyen structuré d’organiser des données.

En plus de créer des objets personnalisés à partir de zéro, PowerShell est également compétent dans la gestion et le traitement efficace des objets JSON.

Création d’un objet JSON personnalisé

Commençons par examiner comment créer un objet JSON personnalisé à l’aide d’une structure JSON d’exemple. Nous allons stocker cette structure JSON dans la variable $MyJsonVar.

$MyJsonVar = @"
 {
   "ExampleJson":{
     "Fruit1":{
       "Name":"Apple",
       "Price":"`$10.00"
     }
  }
 }
"@

Sortie :

Objets personnalisés PowerShell 1

Dans cet exemple, nous avons défini une structure JSON représentant des informations sur des fruits.

Conversion de JSON en objet personnalisé PowerShell

Pour convertir la représentation JSON en un objet personnalisé PowerShell, nous utilisons le cmdlet ConvertFrom-JSON. Assignons le nouvel objet JSON créé à la variable $MyJsonObject.

$MyJsonObject = $MyJsonVar | ConvertFrom-Json

Le cmdlet ConvertFrom-JSON transforme la structure JSON en un PSCustomObject approprié.

Affichage de l’objet personnalisé PowerShell créé

Maintenant, affichons le PSCustomObject nouvellement créé, qui correspond à la structure JSON d’origine.

$MyJsonObject

Sortie :

Objets personnalisés PowerShell 3

Ces commandes accèdent et affichent les propriétés prix et nom du fruit défini dans l’objet personnalisé. Il a donc été confirmé que nous avons obtenu un objet personnalisé PowerShell approprié appelé $MyJsonObject.

Objet JSON PowerShell en chaîne JSON

PowerShell offre le cmdlet ConvertTo-Json, un outil précieux pour convertir un objet personnalisé existant en une chaîne JSON. Ce processus transforme efficacement l’objet en une représentation texte simple au format JSON, qui peut être utilisée ou stockée ultérieurement si nécessaire.

Syntaxe du cmdlet ConvertTo-Json :

ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]

Le cmdlet ConvertTo-Json fournit plusieurs paramètres optionnels pour personnaliser le processus de conversion JSON. Voici une explication de ces paramètres :

  • -InputObject : Ce paramètre est fondamental, car il désigne l’objet personnalisé qui doit être converti en une chaîne JSON. Vous pouvez transmettre l’objet directement à ce paramètre.

  • -Depth : Ce paramètre crucial vous permet de spécifier le nombre de niveaux dans la chaîne JSON résultante. La profondeur indique combien de niveaux d’objets ou de tableaux imbriqués seront inclus dans la chaîne JSON.

    Cependant, il doit être utilisé judicieusement, car une mauvaise utilisation peut entraîner une perte de données. La valeur par défaut est fixée à 2.

  • -Compress : Ce paramètre compresse la sortie JSON en supprimant les espaces et indentations inutiles, ce qui aboutit à une chaîne JSON plus compacte.

  • -EnumsAsStrings : Lorsqu’il est utilisé, ce paramètre représente les valeurs d’énumération sous forme de chaînes dans la sortie JSON, garantissant la compatibilité avec les systèmes qui pourraient ne pas bien gérer les énumérations numériques.

  • -AsArray : Lorsqu’il est spécifié, ce paramètre formate la sortie en tant que tableau JSON, même si l’objet d’entrée n’est pas un tableau.

  • -EscapeHandling : Ce paramètre permet de personnaliser la manière dont les caractères spéciaux sont échappés dans la chaîne JSON, offrant des options telles que Default, EscapeNonAscii, EscapeHtml et DoNotEscape.

Pour démontrer l’utilisation du cmdlet ConvertTo-Json, considérons l’objet personnalisé de la section précédente ($MyJsonObject) :

Nous pouvons facilement passer un objet personnalisé au cmdlet ConvertTo-Json. Nous pouvons envoyer le $MyJsonObject à travers le pipe (|) pour transformer l’objet personnalisé en une chaîne JSON.

$MyJsonObject | ConvertTo-Json

Sortie :

Objet JSON à chaîne JSON

Démontrons encore l’utilisation du cmdlet ConvertTo-Json. Considérons un objet personnalisé nommé $AnotherJsonObject :

$AnotherJsonObject = @{
    Name     = "John Doe"
    Age      = 30
    IsActive = $true
    Hobbies  = @("Reading", "Gardening")
    Address  = @{
        Street  = "1234 Elm St"
        City    = "Anytown"
        Country = "USA"
    }
}

Pour convertir cet objet en une chaîne JSON et afficher la sortie, utilisez la commande suivante :

$AnotherJsonObject | ConvertTo-Json

La sortie de cette transformation est une chaîne JSON illustrative représentant l’objet personnalisé d’origine.

{
    "Name": "John Doe",
    "Age": 30,
    "IsActive": true,
    "Hobbies": [
        "Reading",
        "Gardening"
    ],
    "Address": {
        "Street": "1234 Elm St",
        "City": "Anytown",
        "Country": "USA"
    }
}

Comme nous pouvons le voir, la sortie montre un objet structuré ($AnotherJsonObject) représentant des informations personnelles telles que le nom, l’âge, le statut d’activité, les passe-temps et les détails d’adresse d’une personne.

Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Out-File

Une fois que vous avez obtenu une chaîne JSON à l’aide du cmdlet ConvertTo-Json dans PowerShell, la prochaine étape logique est de la sauvegarder dans un fichier pour un usage ultérieur ou un partage. Heureusement, PowerShell fournit plusieurs méthodes pour y parvenir, l’une des plus simples étant l’utilisation de Out-File.

Le cmdlet Out-File est un outil fiable pour sauvegarder la chaîne JSON dans un fichier. Voici un exemple illustrant comment réaliser cela :

$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"

Sortie :

Enregistrer une chaîne JSON dans un fichier

Dans cet exemple, $MyJsonObject représente la variable contenant la chaîne JSON générée à l’aide de ConvertTo-Json. Le pipeline (|) passe alors cette chaîne JSON à Out-File pour l’écriture dans un fichier.

Le paramètre -FilePath spécifie le chemin de destination pour la chaîne JSON. Remplacez simplement "D:\path\to\example.json" par le chemin de fichier souhaité où vous comptez sauvegarder le contenu JSON.

En utilisant Out-File de cette manière, vous conservez efficacement vos données JSON dans un fichier, les rendant accessibles pour un usage futur ou un partage. Cette technique simple mais puissante est essentielle pour gérer efficacement les données JSON dans un environnement PowerShell.

Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Set-Content

Une autre façon de sauvegarder la chaîne JSON dans un fichier consiste à utiliser le cmdlet Set-Content. Le cmdlet Set-Content fournit un moyen simple d’écrire des données dans un fichier, ce qui en fait un choix approprié pour sauvegarder une chaîne JSON sur disque.

L’exemple suivant démontre ce processus :

$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"

Dans cet exemple, $MyJsonObject est la variable contenant la chaîne JSON générée à l’aide de ConvertTo-Json. Le pipeline (|) passe cette chaîne JSON à Set-Content pour l’écriture dans un fichier.

Le paramètre -Path spécifie le chemin de destination pour la chaîne JSON. Remplacez simplement "D:\path\to\example.json" par le chemin de fichier souhaité où vous comptez sauvegarder le contenu JSON.

Sauvegarder une chaîne JSON dans un fichier à l’aide de ConvertTo-Json et Add-Content

Une autre méthode que nous pouvons utiliser pour sauvegarder une chaîne JSON dans un fichier en PowerShell est le cmdlet Add-Content, qui permet d’ajouter la chaîne JSON à un fichier existant. L’exemple suivant démontre comment y parvenir :

$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"

Dans cet exemple, $MyJsonObject représente la variable contenant la chaîne JSON générée à l’aide de ConvertTo-Json. Le pipeline (|) passe cette chaîne JSON à Add-Content pour l’ajout à un fichier spécifié par le paramètre -Path.

Le paramètre -Path indique le fichier auquel la chaîne JSON sera ajoutée. Remplacez simplement "D:\path\to\example.json" par le chemin de fichier souhaité où vous comptez ajouter le contenu JSON.

Le cmdlet Add-Content offre un moyen pratique d’ajouter ou d’annexer du contenu à un fichier sans écraser les données existantes. Cela est particulièrement utile lors de la gestion de chaînes JSON qui doivent être mises à jour ou étendues au fil du temps.

Conclusion

Cet article a démontré le processus de conversion d’objets PowerShell en chaînes JSON et de leur sauvegarde dans des fichiers à l’aide du cmdlet ConvertTo-Json, ainsi que d’autres cmdlets de gestion de fichiers comme Out-File, Set-Content et Add-Content.

En tirant parti de ces outils, les utilisateurs peuvent gérer efficacement les données JSON, permettant un traitement, un partage et une intégration fluides avec diverses applications et systèmes.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
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.

Article connexe - PowerShell JSON