PowerShell : Comment récupérer les en-têtes d’un fichier CSV ?
I. Présentation
Pour diverses raisons, au sein d'un script PowerShell il peut être intéressant de récupérer la liste des en-têtes d'un fichier CSV. Par exemple, pour comparer deux fichiers CSV avec le commandlet Compare-Object, on doit spécifier les propriétés qui sont alors les noms des en-têtes du CSV. Si l'on récupère en automatique ces valeurs, ça permet de variabiliser cette partie 🙂
II. Stocker les valeurs d'en-têtes d'un CSV
Pour commencer, au sein de la variable $CSVExample on va stocker le chemin vers le fichier CSV.
$CSVExample = "C:\temp\csv-example.csv"
Ce CSV contient les en-têtes suivantes : Nom, Prenom, Age, Ville
Ensuite, on va utiliser le commandlet Get-Content qui permet de récupérer le contenu d'un fichier, sous forme de tableau. On va s'intéresser à la première ligne du fichier puisque ce sont les en-têtes, ce qui correspond à la ligne zéro (0) du tableau. Pour afficher cette ligne, voici ce que l'on va saisir :
(Get-Content $CSVExample)[0]
Ce qui va retourner, par exemple :
Nom;Prenom;Age;Ville
Maintenant que l'on sait comment obtenir les valeurs de l'en-tête, on peut aussi récupérer de manière indépendante chaque valeur. Ceci s'effectue via un split sur le caractère séparateur puisqu'il sépare chaque valeur.
((Get-Content $CSVExample)[0]).Split(";")
La commande ci-dessus va retourner la liste des valeurs d'en-tête du CSV. Si l'on veut aller encore plus finement dans la récupération des valeurs, on peut aller piocher dans le tableau généré suite au split et récupérer une valeur du tableau. Par exemple, pour obtenir le nom de la première colonne du CSV :
(((Get-Content $CSVExample)[0]).Split(";"))[0]
Le fait de spliter la ligne permet aussi de compter le nombre de colonne (valeurs d'en-tête) contenue dans le fichier CSV :
(((Get-Content $CSVExample)[0]).Split(";")).Count
Ce qui retournera 4.
Pour finir ce tutoriel, voici une copie d'écran qui illustre quelques-unes des commandes écrites ci-dessus :
Amusez-vous bien 🙂