Powershell - Export-Csv contre Export-Clixml

Pour me soutenir, vous pouvez vous abonner à la chaîne, partager et liker les vidéos, désactiver votre bloqueur de pub ou encore faire un don. Merci!

Export-Csv est pratique puisqu’il permet d’exporter et d’utiliser l’export dans un tableur comme Excel ou dans Powershell avec Import-Csv.
Le fichier généré a aussi l’avantage d’être lisible.

# Exemple
Get-Process |
Select-Object -Property name,cpu,path |
Export-Csv -Path c:\process.csv
# Afficher le contenu du fichier
Get-Content -Path c:\process.csv
# Importer le CSV
Import-Csv -Path C:\process.csv

Mais Export-Csv déclare forfait dans certaines conditions

Export-Csv

Get-Service |
Select-Object -Property name,dependentservices |
Export-Csv -Path c:\demo.csv
# Afficher le contenu du fichier
Get-Content -Path c:\demo.csv
# Importer le CSV
Import-Csv -Path C:\demo.csv
# Afficher le type de la propriété dependentservices
(Get-Service).dependentservices.GetType()

Le problème vient du fait que Export-Csv ne sait pas traiter les propriétés de type array (représentées entre accolades).

Si vous voulez exporter et importer vos objets dans ce contexte, il est préférable d’utiliser Export-Clixml.

Export-CliXml

Get-Service |
Select-Object -Property name,dependentservices |
Export-Clixml -Path c:\process.xml
# Afficher le contenu du fichier
Get-Content -Path c:\process.xml
# Importer le fichier xml
Import-Clixml -Path C:\process.xml

Malheureusement, l’utilisation dans un tableur n’est plus directement possible et le fichier généré est difficilement lisible.

Liens en relation