Vous débutez avec PowerShell et vous vous demandez comment manipuler facilement des fichiers CSV ? Que vous soyez administrateur système, analyste ou simplement curieux, cet article va vous montrer pas à pas comment lire, comprendre et exploiter des fichiers CSV avec PowerShell. Et ce, sans avoir besoin d’Excel !
Table des matières
Qu’est-ce qu’un fichier CSV ?
Définition
Pour créer un fichier CSV, on structure un fichier texte avec une ligne d’en-tête suivie de lignes de données. Puis, un séparateur sépare chaque donnée. Les anglo-saxons utilisent généralement la virgule, nous francophones plutôt le point-virgule.
CSV signifie Comma Separated Values, soit valeurs séparées par une virgule.
Exemple de fichier CSV simple :
Name;Surname;Age
Larsouille;joe;30
Ducable;Jean-Raoul;33
Lapuree;jérémie;25
Bracame;Edouard;27
Posichon;Paul;40
Cas d’utilisation courants
Les entreprises utilisent très couramment les fichiers CSV pour les raisons suivantes :
- Facilité d’usage
- Structure des données aisément compréhensible
- Manipulation aisée
Un fichier CSV s’ouvre très facilement dans Excel. La plupart du temps Excel reconnaît même le fichier sans avoir rien à faire de spécial. Ainsi le fichier s’affiche parfaitement bien et chaque colonne est reconnue. Un utilisateur peut donc modifier facilement les données et le sauvegarder à nouveau en CSV (tant qu’il ne fait ni mise en forme, ni création de formules).
Etant donné la structure simple, n’importe qui comprend la constitution d’un fichier CSV car chaque ligne représente un enregistrement, à l’image de ce qu’on peut trouver dans une base de données.
Pourquoi utiliser PowerShell pour manipuler les fichiers CSV ?
L’avantage d’utiliser PowerShell pour manipuler les fichiers CSV est qu’il va être facile de charger l’intégralité du fichier en mémoire et de manipuler les données. Les données seront importées sous la forme d’un tableau d’objets.
Si vous avez compris la puissance de l’orientation objet de PowerShell, l’intérêt devient évident. En effet, en quelques commandes PowerShell vous pourrez par exemple trier les données, et faire des calculs. Ainsi, il n’y aura nul besoin de passer par Excel pour faire des traitements simples ou très complexes.
Et si vous avez besoin d’exporter des données en CSV, ce sera tout aussi simple car PowerShell possède un jeu de commandes dédié que nous verrons dans un prochain article.
Lire un fichier CSV avec PowerShell : Import-CSV
Reprenons l’exemple du fichier CSV précédent. Nous appellerons notre fichier joebarTeam.csv
, et en voici son contenu :
Name;Surname;Age
Larsouille;joe;30
Ducable;Jean-Raoul;33
Lapuree;jérémie;25
Bracame;Edouard;27
Posichon;Paul;40
La première chose à faire est tout d’abord d’identifier le délimiteur des données. Pour se faire, vous devrez ouvrir le fichier dans n’importe quel éditeur de texte ou bien afficher son contenu depuis la console PowerShell à l’aide de la commande Get-Content.
Par exemple :
PS > Get-Content -FilePath ./joebarTeam.csv
Import-CSV : syntaxe de base et exemples
Maintenant que nous nous sommes assurés de la présence de la ligne d’entête et que nous avons identifié le délimiteur, nous pouvons utiliser la ligne de commandes suivante pour charger le fichier en mémoire et plus particulièrement dans la variable que j’ai appelée arbitrairement $data
:
PS > $data = Import-Csv -Path .\joebarTeam.csv -Delimiter ';'
Observons à présent le type de la variable $data
:
PS > $data.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
On constate que $data
est un tableau d’objets car nous pouvons constater la présence des crochets dans le colonne Name
juste après le nom du type Object
. Jusque-là tout est normal.
Contrôlons à présent le type de données et les propriétés des objets que nous avons importé. Pour se cela, nous utiliserons la commande Get-Member
.
Get-Member
est une commande essentielle dans PowerShell. Si vous ne la connaissez pas, vous devez absolument apprendre à la maîtriser. Celle-ci permet d’obtenir de l’information sur le type de l’objet manipulé ainsi que ses caractéristiques (propriétés et méthodes que l’on appelle « les membres », d’où le nom de la commande)
PS > $data | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Age NoteProperty string Age=30
Name NoteProperty string Name=Larsouille
Surname NoteProperty string Surname=joe
Nous pouvons constater que les objets contenus dans $data
sont de type PSCustomObject
et qu’ils possèdent les propriétés Name, Surname, Age. De fait, celles-ci correspondent exactement à la ligne d’en-tête de notre fichier CSV, ce qui explique ce résultat.
Affichons maintenant le contenu de $data
pour vérifier que nos données ont été correctement importées en mémoire :
PS > $data
Name Surname Age
--- ------ ---
Larsouille joe 30
Lapuree jérémie 25
Ducable Jean-Raoul 33
Bracame Edouard 27
Posichon Paul 40
Le fichier CSV a été importé correctement; nous allons par conséquent pouvoir traiter les données.
Conseils pour éviter les erreurs courantes
Problème avec le délimiteur
L’erreur la plus classique consiste à tenter d’importer un CSV sans préciser le délimiteur (voir capture d’écran ci-après). Si c’est le cas, PowerShell choisira alors le délimiteur virgule par défaut, par conséquent vous n’importerez pas correctement votre fichier. PowerShell ne retournera cependant pas d’erreur, et la seule façon de s’en rendre compte c’est soit d’afficher $data
et de constater que les colonnes ne sont pas ce qu’elles devraient être.

Un bon réflexe à avoir est de toujours utiliser Get-Member pour contrôler les propriétés de nos objets. Ici, nous pouvons nous rendre compte que les noms des propriétés de ne correspondent pas à l’entête du fichier. Cela doit vous mettre la puce à l’oreille 😉.
PowerShell et les problèmes de caractères accentués (=problème d’encodage du fichier CSV)
Vous vous rendez compte au moment de l’affichage des données de votre fichier que les accents ne s’affichent pas correctement ? Cela se produit si le fichier CSV se trouve dans un format d’encodage qui ne coïncide pas avec le format d’encodage de la console PowerShell. De plus, selon la version de PowerShell que vous utilisez le comportement pourra différer quelque peu.
Si cela se produit, votre salut pour vous en sortir passera par l’essai des différentes valeurs d’encodage de la commande Import-CSV
via le paramètre -Encoding
.
Par exemple, si vous travaillez avec PowerShell 7 et que le fichier CSV est encodé au format ANSI (ASCII étendu), alors vous devrez utiliser la ligne de commande suivante :
PS > $data = Import-Csv -Path .\joebar.csv -Delimiter ';' -Encoding ANSI
Conclusion
Tout d’abord, vous savez désormais comment lire un fichier CSV avec PowerShell, identifier les erreurs fréquentes et vérifier l’importation. Ensuite, gardez à l’esprit que la cause la plus courante d’échec concerne le délimiteur. De ce fait, avant toute nouvelle tentative d’importation dans PowerShell, pensez systématiquement à ouvrir votre fichier dans un éditeur de texte. Enfin, grâce à cette vérification préalable, vous éviterez bien des déconvenues lors du traitement de vos données. les erreurs fréquentes et contrôler l’importation.
Dans le prochain article, nous verrons comment trier, filtrer et rechercher dans un fichier CSV avec PowerShell sans jamais ouvrir Excel.
🔗 Liens utiles
- 🎓 Formation PowerShell en ligne pour débutants et faux débutants (vidéos + cours distanciel)
- 📚 Livre : PowerShell Core et Windows PowerShell (Les fondamentaux du langage – 2e édition ENI)
- 📄 Forum de la communauté PowerShell Francophone
💼 Besoin d’aller plus loin ?
Je propose des formations PowerShell personnalisées, en ligne ou en entreprise. Découvrez-les ici.