Blog ENI : Toute la veille numérique !
Prolongation jusqu'à dimanche : -25€ dès 75€ sur les livres en ligne, vidéos... code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Manipuler les fichiers

Introduction

Dans ce chapitre, nous allons apprendre à manipuler différents types de fichiers avec PowerShell.

Nous verrons comment ouvrir, lire, ajouter, modifier ou supprimer du contenu.

Les formats de fichiers utilisés seront les suivants :

  • Les fichiers texte

  • Les fichiers XML

  • Les fichiers CSV

Encodage de caractères et fichiers

1. Qu’est-ce que l’encodage ?

Lorsqu’une commande ou un script est enregistré, chaque lettre est créée à partir de caractères. Ces caractères sont automatiquement traduits par le système en bits et en octets. Un ordinateur stocke des données binaires, des bits 0 ou 1. Chaque caractère (lettre, ponctuation, espace…) sera associé à un nombre.

L’encodage est la technique qui permettra de traduire du contenu en octets puis de le traduire à nouveau dans le contenu d’origine. Autrement dit, c’est une méthode pour stocker du texte dans un ordinateur.

Avec PowerShell, il est possible de spécifier l’encodage lors de l’ouverture ou l’enregistrement d’un fichier. Il existe différents types d’encodage que nous n’allons pas détailler ici. Chacun utilise une suite d’octets différente.

2. Pourquoi l’encodage ?

L’encodage d’un fichier peut avoir une importance capitale, surtout si des caractères spéciaux sont utilisés.

Si l’encodage n’est pas correct lors de la lecture du fichier, il se peut qu’il soit illisible.

Si vous souhaitez, par exemple, afficher du texte en français avec des accents (à, é, è…), ceux-ci peuvent être mal interprétés...

Manipuler des fichiers texte

1. Gestion des fichiers texte

Pour gérer les fichiers texte, nous utiliserons les cmdlets suivantes :

  • Get-Content

  • Add-Content

  • Set-Content

  • Clear-Content

Celles-ci sont incluses dans le module PowerShell Microsoft.PowerShell.Management.

Il est possible de visualiser cela en utilisant la commande suivante :

(Get-Command Get-Content).dll 
(Get-Command Set-Content).dll 
(Get-Command Add-Content).dll 
(Get-Command Clear-Content).dll 

2. Exporter le contenu d’un objet vers un fichier

Le contenu d’un objet peut être facilement exporté dans un fichier texte.

Prenons l’exemple suivant : nous souhaitons récupérer la liste des applications sur un poste (juste le nom des applications).

 Utilisez la classe WMI Win32_Product triée sur la propriété Name et associez le résultat dans une variable.

$Applications = Get-WMIObject Win32_Product | Select Name 

Davantage d’informations seront disponibles sur l’utilisation de PowerShell et WMI dans le chapitre PowerShell et WMI.

 Pour exporter la liste des applications, utilisez la cmdlet Out-File.

 Utilisez la bonne pratique de l’aide PowerShell.

Get-Help Out-File 

Les paramètres suivants seront les plus utiles :

  • -FilePath : chemin du fichier d’export.

  • -Encoding : encodage du fichier.

  • -Append : permet d’ajouter du contenu à un fichier existant.

L’export de notre liste d’applications se fera donc ainsi :

$Applications | Out-File "C:\ENI\MesApplications.txt" 

Ci-dessous le résultat :

images/28RI09.png

Pour n’exporter que le nom sans la colonne Name :

$Applications.name | Out-File "C:\ENI\MesApplications.txt" 

La cmdlet Out-File permet également d’exporter une simple chaîne de caractères dans un fichier.

"Bonjour et bienvenue" | Out-File "C:\ENI\Test.txt" 

3. Lire le contenu d’un fichier

Pour lire le contenu d’un fichier, nous utiliserons la cmdlet Get-Content.

Celle-ci permettra, comme son nom l’indique, de récupérer le contenu d’un élément. Son utilisation est très simple, il suffira d’ajouter le chemin du fichier pour lequel nous souhaitons obtenir le contenu dans un paramètre -Path.

Cependant, ce paramètre est optionnel, le chemin peut s’ajouter...

Manipuler des fichiers XML

1. Qu’est-ce que le XML ?

XML (eXtensible Markup Language) est ce que l’on appelle un métalangage dit langage de balises.

Une balise correspond à un élément ouvert et fermé.

<Nom>Damien</Nom> 

La version utilisée de XML est majoritairement la 1.0. XML est standardisé comme recommandation W3C depuis 1998.

2. Pourquoi utiliser le format XML ?

XML est une méthode permettant de représenter de l’information et peut être utilisé avec tous les langages informatiques.

Un fichier XML peut comporter autant d’informations que souhaité et permettra de faciliter la gestion de vos applications, serveurs, installations…

Nous retrouvons par exemple l’utilisation de XML dans les environnements :

  • MDT (Microsoft Deployment Toolkit)

  • MECM (Microsoft Endpoint Configuration Manager)

En effet, lorsqu’un élément est ajouté dans MDT (application, système d’exploitation, driver), cela ajoute un nouveau nœud dans un fichier XML.

Chaque composant (driver, application, OS) alimente un fichier XML qui sera lu lors de l’installation d’un poste de travail.

Sur MECM, lorsqu’une Task Sequence est créée, cela crée par la même occasion un fichier XML avec toutes les informations de la Task Sequence.

Le fichier XML vous permettra par exemple de permettre à l’utilisateur, technicien ou autre de configurer des paramètres en modifiant des nœuds dans le fichier.

Dans les exemples suivants, nous allons utiliser un fichier XML avec le contenu ci-dessous :

<Applications> 
    <Application Actif="Oui" Architecture="64"> 
           <Name>Notepad++</Name> 
           <Version>7.9</Version> 
           <Sources>D:\Applications\Sources\NP++</Sources> 
           <InstallCMD>npp.7.9.Installer.exe /S</InstallCMD> 
           <Langage>FR</Langage> 
    </Application> 
 
    <Application...

Manipuler des fichiers CSV

1. CSV et les délimiteurs

a. Qu’est-ce qu’un délimiteur ?

La gestion des fichiers CSV, export ou import, permet l’utilisation des délimiteurs, également appelés séparateurs.

Deux délimiteurs sont disponibles :

  • virgule (,),

  • point-virgule (;).

Ceux-ci permettant de séparer des colonnes et varient en fonction du poste et de la langue installée.

b. Détecter le délimiteur par défaut sur mon poste

Pour trouver le délimiteur utilisé par défaut sur votre poste, il faut se rendre dans l’emplacement suivant : Panneau de configuration - Région - Paramètres supplémentaires.

Le délimiteur sera affiché dans le champ Séparateur de listes.

images/28RI42.png

c. Détecter le délimiteur utilisé dans un fichier

Éditons le fichier CSV avec Notepad++ afin de voir le délimiteur utilisé.

La première ligne nous montre que le séparateur utilisé est la virgule ",".

images/28RI43.png

Nous allons donc créer un petit bout de code qui nous permettra :

  • de détecter automatiquement le délimiteur (séparateur),

  • d’importer un fichier CSV en utilisant le bon délimiteur.

L’idée est de charger la première ligne pour voir si celle-ci contient un caractère ";" ou ",", à l’aide de la cmdlet Get-Content.

La sélection de la première ligne se fera en utilisant le paramètre -First 1.

$MonCSV = "C:\ENI\MesApplications.csv" 
$PremiereLigne = Get-Content $MonCSV | Select -First 1 

Nous stockerons ensuite le délimiteur utilisé dans une variable :

$Delimiter = If($PremiereLigne.Split(";").Length -gt 1)
{";"}Else{","}; 

Ci-dessous le code complet :

$MonCSV = "C:\ENI\MesApplications.csv" 
$PremiereLigne = Get-Content $MonCSV | Select -First 1 
$Delimiter = If($PremiereLigne.Split(";").Length -gt 1)
{";"}Else{","}; 

Nous verrons plus tard comment importer un fichier CSV en utilisant...