Partager via


Import-Csv

Crée des objets personnalisés de type table à partir des éléments d’un fichier de valeurs séparées par des caractères (CSV).

Syntaxe

Delimiter (Par défaut)

Import-Csv
    [[-Path] <string[]>]
    [[-Delimiter] <char>]
    [-LiteralPath <string[]>]
    [-Header <string[]>]
    [-Encoding <string>]
    [<CommonParameters>]

UseCulture

Import-Csv
    [[-Path] <string[]>]
    -UseCulture
    [-LiteralPath <string[]>]
    [-Header <string[]>]
    [-Encoding <string>]
    [<CommonParameters>]

Description

L’applet de commande Import-Csv crée des objets personnalisés de type table à partir des éléments des fichiers CSV. Chaque colonne du fichier CSV devient une propriété de l’objet personnalisé et les éléments des lignes deviennent les valeurs de propriété. Import-Csv fonctionne sur n’importe quel fichier CSV, y compris les fichiers générés par l’applet de commande Export-Csv.

Vous pouvez utiliser les paramètres de l’applet de commande Import-Csv pour spécifier la ligne d’en-tête de colonne et le délimiteur d’élément, ou bien indiquer à Import-Csv d'utiliser le séparateur de liste de la culture actuelle comme délimiteur d’élément.

Vous pouvez également utiliser les applets de commande ConvertTo-Csv et ConvertFrom-Csv pour convertir des objets en chaînes CSV (et inversement). Ces applets de commande sont identiques aux applets de commande Export-Csv et Import-Csv, sauf qu’elles fonctionnent avec des données du pipeline au lieu de fichiers.

Si une entrée de ligne d’en-tête dans un fichier CSV contient une valeur vide ou null, PowerShell insère un nom de ligne d’en-tête par défaut et affiche un message d’avertissement.

Import-Csv utilise la marque d’ordre d’octet (BOM) pour détecter le format d’encodage du fichier. Si le fichier n’a pas de boM, il suppose que l’encodage est UTF8.

Exemples

Exemple 1 : Importer des objets de processus

Cet exemple montre comment exporter, puis importer un fichier CSV d’objets de processus.

Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | 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()
BasePriority               NoteProperty string BasePriority=8
Company                    NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name                   SI Handles VM            WS        PM        NPM    Path
----                   -- ------- --            --        --        ---    ----
ApplicationFrameHost   4  407     2199293489152 15884288  15151104  23792  C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit                0  157     2199112204288 4591616   1630208   10376
winlogon               4  233     2199125549056 7659520   2826240   10992  C:\WINDOWS\System32\WinLogon.exe
WinStore.App           4  846     873435136     33652736  26607616  55432  C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE               0  201     2199100219392 8830976   3297280   10632  C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE               0  407     2199157727232 18509824  12922880  16624  C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost               0  834     2199310204928 51945472  87441408  24984  C:\Windows\System32\WUDFHost.exe

L’applet de commande Get-Process envoie des objets de processus dans le pipeline vers Export-Csv. L’applet de commande Export-Csv convertit les objets de processus en chaînes CSV et enregistre les chaînes dans le fichier Processes.csv. L’applet de commande Import-Csv importe les chaînes CSV à partir du fichier Processes.csv. Les chaînes sont enregistrées dans la variable $P. La variable $P est envoyée vers le pipeline au cmdlet Get-Member qui affiche les propriétés des chaînes CSV importées. La variable $P est envoyée au pipeline vers le cmdlet Format-Table, qui affiche les objets.

Exemple 2 : Spécifier le délimiteur

Cet exemple montre comment utiliser le paramètre de délimiteur de l’applet de commande Import-Csv.

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table

L’applet de commande Get-Process envoie des objets de processus vers le bas du pipeline à Export-Csv. L’applet de commande Export-Csv convertit les objets de processus en chaînes CSV et enregistre les chaînes dans le fichier Processes.csv. Le paramètre Delimiter est utilisé pour spécifier un délimiteur de type deux-points L’applet de commande Import-Csv importe les chaînes CSV à partir du fichier Processes.csv. Les chaînes sont enregistrées dans la variable $P. La variable $P est transmise par le pipeline au cmdlet Format-Table.

Exemple 3 : Spécifier la culture actuelle pour le délimiteur

Cet exemple montre comment utiliser l’applet de commande Import-Csv avec le paramètre UseCulture.

(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture

L’applet de commande Get-Culture utilise les propriétés imbriquées TextInfo et ListSeparator pour obtenir le séparateur de liste par défaut de la culture actuelle. L’applet de commande Get-Process envoie des objets de processus vers le bas du pipeline à Export-Csv. L’applet de commande Export-Csv convertit les objets de processus en chaînes CSV et enregistre les chaînes dans le fichier Processes.csv. Le paramètre UseCulture utilise le séparateur de liste par défaut de la culture actuelle. L’applet de commande Import-Csv importe les chaînes CSV à partir du fichier Processes.csv.

Exemple 4 : Modifier les noms de propriétés dans un objet importé

Cet exemple montre comment utiliser le paramètre Header de Import-Csv pour modifier les noms des propriétés dans l’objet importé résultant.

Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
          'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
          'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State         : Running
MoreData      : True
StatusMessage :
Location      : localhost
Command       : Get-Process
StateInfo     : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : a259eb63-6824-4b97-a033-305108ae1c2e
Id            : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime     : 12/20/2018 18:59:57
EndTime       :
JobType       : BackgroundJob
Output        : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress      : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information   : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]

Le cmdlet Start-Job démarre une tâche d’arrière-plan qui exécute Get-Process. Un objet de tâche est transmis par le pipeline au cmdlet Export-Csv et converti en chaîne CSV Le paramètre NoTypeInformation supprime l’en-tête d’informations de type de la sortie CSV et est facultatif dans PowerShell v6 et versions ultérieures. La variable $Header contient un en-tête personnalisé qui remplace les valeurs par défaut suivantes : HasMoreData, JobStateInfo, PSBeginTime, PSEndTimeet PSJobTypeName. La variable $A utilise l’applet de commande Get-Content pour obtenir la chaîne CSV à partir du fichier Jobs.csv. La variable $A est utilisée pour supprimer l’en-tête par défaut du fichier. L’applet de commande Out-File enregistre la nouvelle version du fichier Jobs.csv dans la variable $A. L’applet de commande Import-Csv importe le fichier Jobs.csv et utilise le paramètre Header pour appliquer la variable $Header. La variable $J contient le PSCustomObject importé et affiche l’objet dans la console PowerShell.

Exemple 5 : Créer un objet personnalisé à l’aide d’un fichier CSV

Cet exemple montre comment créer un objet personnalisé dans PowerShell à l’aide d’un fichier CSV.

Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | 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()
LinkID      NoteProperty string LinkID=113207
TopicTitle  NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases

Pour créer votre fichier Links.csv, utilisez les valeurs indiquées dans la sortie Get-Content.

L’applet de commande Get-Content affiche le fichier Links.csv. L’applet de commande Import-Csv importe le fichier Links.csv. Le paramètre Header spécifie les noms de propriétés LinkId et TopicTitle. Les objets sont stockés dans la variable $A. L’applet de commande Get-Member affiche les noms de propriétés du paramètre En-tête . Le cmdlet Where-Object sélectionne les objets dont la propriété TopicTitle inclut alias.

Exemple 6 : Importer un fichier CSV manquant une valeur

Cet exemple montre comment l’applet de commande Import-Csv dans PowerShell répond lorsque la ligne d’en-tête d’un fichier CSV inclut une valeur null ou vide. Import-Csv remplace un nom par défaut pour la ligne d’en-tête manquante qui devient le nom de propriété de l’objet qui Import-Csv retourne.

Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers weren't specified. Default names starting with "H" have been used in
place of any missing headers.

ProjectID ProjectName H1      Completed
--------- ----------- --      ---------
13        Inventory   Redmond True
440                   FarEast True
469       Marketing   Europe  False

L’applet de commande Get-Content affiche le fichier Projects.csv. Il manque une valeur dans la ligne d’en-tête entre ProjectName et Completed. L’applet de commande Import-Csv importe le fichier Projects.csv et affiche un message d’avertissement, car H1 est un nom d’en-tête par défaut.

Paramètres

-Delimiter

Spécifie le délimiteur qui sépare les valeurs de propriété dans le fichier CSV. La valeur par défaut est une virgule (,).

Entrez un caractère, tel qu’un signe deux-points (:). Pour spécifier un point-virgule (;) le placer entre guillemets simples. Pour spécifier des caractères spéciaux échappés comme la tabulation (`t), placez-les entre guillemets doubles.

Si vous spécifiez un caractère autre que le délimiteur de chaîne réel dans le fichier, Import-Csv ne pouvez pas créer les objets à partir des chaînes CSV et renvoyer les chaînes CSV complètes.

Propriétés du paramètre

Type:Char
Valeur par défaut:comma (,)
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

Delimiter
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Encoding

Spécifie le type d’encodage du fichier cible. La valeur par défaut est Default.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • ASCII utilise le jeu de caractères ASCII (7 bits).
  • BigEndianUnicode utilise UTF-16 avec l’ordre d’octet big-endian.
  • Default Utilise l’encodage qui correspond à la page de codes active du système (généralement ANSI).
  • OEM Utilise l’encodage qui correspond à la page de codes OEM actuelle du système.
  • Unicode utilise UTF-16 avec l’ordre d’octet little-endian.
  • UTF7 utilise UTF-7.
  • UTF8 utilise UTF-8.
  • UTF32 utilise UTF-32 avec l’ordre d’octet little-endian.

Propriétés du paramètre

Type:String
Valeur par défaut:Default
Valeurs acceptées:ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Header

Spécifie une ligne d’en-tête de colonne alternative pour le fichier importé. L’en-tête de colonne détermine les noms de propriétés des objets créés par Import-Csv.

Entrez les en-têtes de colonne sous la forme d’une liste séparée par des caractères. Ne placez pas la chaîne d’en-tête entre guillemets. Placez chaque en-tête de colonne entre guillemets simples.

Si vous entrez moins d’en-têtes de colonnes qu’il y a de colonnes de données, les colonnes de données restantes sont ignorées. Si vous entrez plus d’en-têtes de colonnes qu’il y a de colonnes de données, les en-têtes de colonne supplémentaires sont créés avec des colonnes de données vides.

Lorsque vous utilisez le paramètre d’en-tête , supprimez la ligne d’en-tête d’origine du fichier CSV. Sinon, Import-Csv crée un objet supplémentaire à partir des éléments de la ligne d’en-tête.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-LiteralPath

Spécifie le chemin d’accès au fichier CSV à importer. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement tel qu'elle est saisie. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:PSPath

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-Path

Spécifie le chemin d’accès au fichier CSV à importer. Vous pouvez également transmettre un chemin par pipeline à Import-Csv

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:0
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-UseCulture

Utilise le séparateur de liste de la culture actuelle comme délimiteur d’élément. Pour rechercher le séparateur de liste pour une culture, utilisez la commande suivante : (Get-Culture).TextInfo.ListSeparator.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

UseCulture
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

String

Vous pouvez acheminer une chaîne contenant un chemin vers cette applet de commande.

Sorties

Object

Cette applet de commande retourne les objets décrits par le contenu du fichier CSV.

Notes

Windows PowerShell inclut les alias suivants pour Import-Csv:

  • ipcsv

Étant donné que les objets importés sont des versions CSV du type d’objet, ils ne sont pas reconnus et mis en forme par les entrées de mise en forme de type PowerShell qui mettez en forme les versions non CSV du type d’objet.

Le résultat d’une commande Import-Csv est une collection de chaînes qui forment un objet personnalisé de type table. Chaque ligne est une chaîne distincte. Vous pouvez donc utiliser la propriété Count de l’objet pour compter les lignes de la table. Les colonnes sont les propriétés de l’objet et des éléments dans les lignes sont les valeurs de propriété.

La ligne d’en-tête de colonne détermine le nombre de colonnes et les noms de colonnes. Les noms de colonnes sont également les noms des propriétés des objets. La première ligne est interprétée comme les en-têtes de colonne, sauf si vous utilisez le paramètre Header pour spécifier les en-têtes de colonne. Si une ligne a plus de valeurs que la ligne d’en-tête, les valeurs supplémentaires sont ignorées.

Si la ligne d’en-tête de colonne manque une valeur ou contient une valeur null ou vide, Import-Csv utilise H suivi d’un nombre pour l’en-tête de colonne et le nom de propriété manquants.

Dans le fichier CSV, chaque objet est représenté par une liste séparée par des caractères des valeurs de propriété de l’objet. Les valeurs de propriété sont converties en chaînes à l’aide de la méthode ToString() de l’objet, de sorte qu’elles sont représentées par le nom de la valeur de propriété. Export-Csv n’exporte pas les méthodes de l’objet.