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 virgules (CSV).
Syntax
Import-Csv
[[-Path] <string[]>]
[[-Delimiter] <char>]
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<CommonParameters>]
Import-Csv
[[-Path] <string[]>]
-UseCulture
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<CommonParameters>]
Description
L’applet Import-Csv
de commande 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 dans les 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 Export-Csv
commande.
Vous pouvez utiliser les paramètres de l’applet Import-Csv
de commande pour spécifier la ligne d’en-tête de colonne et le délimiteur d’élément, ou diriger Import-Csv
pour utiliser le séparateur de liste pour la culture actuelle comme délimiteur d’élément.
Vous pouvez également utiliser les applets de ConvertTo-Csv
commande et ConvertFrom-Csv
pour convertir des objets en chaînes CSV (et retour). Ces applets de commande sont identiques aux applets de Export-CSV
commande et Import-Csv
, sauf qu’elles ne traitent pas 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 nomenclature, 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 Get-Process
de commande envoie les objets de processus dans le pipeline à .Export-Csv
L’applet Export-Csv
de commande convertit les objets de processus en chaînes CSV et enregistre les chaînes dans le fichier Processes.csv. L’applet Import-Csv
de commande importe les chaînes CSV à partir du fichier Processes.csv.
Les chaînes sont enregistrées dans la $P
variable. La $P
variable est envoyée vers le bas du pipeline à l’applet Get-Member
de commande qui affiche les propriétés des chaînes CSV importées. La $P
variable est envoyée vers le bas du pipeline à l’applet de Format-Table
commande et affiche les objets.
Exemple 2 : Spécifier le délimiteur
Cet exemple montre comment utiliser le paramètre Delimiter de l’applet Import-Csv
de commande.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
L’applet Get-Process
de commande envoie les objets de processus dans le pipeline à Export-Csv
. L’applet Export-Csv
de commande 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 deux-points. L’applet Import-Csv
de commande importe les chaînes CSV à partir du fichier Processes.csv. Les chaînes sont enregistrées dans la $P
variable. La $P
variable est envoyée vers le bas du pipeline à l’applet de Format-Table
commande.
Exemple 3 : Spécifier la culture actuelle pour le délimiteur
Cet exemple montre comment utiliser l’applet de Import-Csv
commande 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 Get-Culture
de commande 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 Get-Process
de commande envoie les objets de processus dans le pipeline à Export-Csv
. L’applet Export-Csv
de commande 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 Import-Csv
de commande 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]
L’applet Start-Job
de commande démarre un travail en arrière-plan qui exécute Get-Process
. Un objet de travail est envoyé vers le bas du pipeline à l’applet Export-Csv
de commande 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 Core.
La $Header
variable contient un en-tête personnalisé qui remplace les valeurs par défaut suivantes : HasMoreData, JobStateInfo, PSBeginTime, PSEndTime et PSJobTypeName. La $A
variable utilise l’applet de Get-Content
commande pour obtenir la chaîne CSV à partir du fichier Jobs.csv. La $A
variable est utilisée pour supprimer l’en-tête par défaut du fichier. L’applet Out-File
de commande enregistre la nouvelle version du fichier Jobs.csv dans la $A
variable. L’applet Import-Csv
de commande importe le fichier Jobs.csv et utilise le paramètre Header pour appliquer la $Header
variable. La $J
variable contient le PSCustomObject importé et affiche l’objet dans la console PowerShell.
Exemple 5 : Create 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 Get-Content
sortie.
L’applet Get-Content
de commande affiche le fichier Links.csv. L’applet Import-Csv
de commande importe le fichier Links.csv. Le paramètre Header spécifie les noms de propriété LinkId et TopicTitle. Les objets sont stockés dans la $A
variable . L’applet Get-Member
de commande affiche les noms de propriétés du paramètre Header . L’applet Where-Object
de commande sélectionne des objets avec la propriété TopicTitle qui inclut un alias.
Exemple 6 : Importer un fichier CSV dont il manque une valeur
Cet exemple montre comment l’applet de Import-Csv
commande dans PowerShell répond lorsque la ligne d’en-tête d’un fichier CSV inclut une valeur null ou vide. Import-Csv
substitue un nom par défaut à 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 were not 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
(Import-Csv -Path .\Projects.csv).H1
WARNING: One or more headers were not specified. Default names starting with "H" have been used in place of any missing headers.
Redmond
FarEast
Europe
Pour créer votre fichier Projects.csv, utilisez les valeurs indiquées dans la sortie de l’exemple Get-Content
.
L’applet Get-Content
de commande affiche le fichier Projects.csv. Il manque une valeur entre ProjectName et Completed dans la ligne d’en-tête. L’applet Import-Csv
de commande importe le fichier Projects.csv et affiche un message d’avertissement, car H1 est un nom d’en-tête par défaut. La (Import-Csv -Path .\Projects.csv).H1
commande obtient les valeurs de propriété H1 et affiche un avertissement.
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.
Si vous spécifiez un caractère autre que le délimiteur de chaînes réel dans le fichier, Import-Csv
ne peut pas créer les objets à partir des chaînes CSV et retourne les chaînes CSV.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Spécifie le type de codage du fichier cible. La valeur par défaut est Default.
Les valeurs acceptables pour ce paramètre sont les suivantes :
- ASCII Utilise un jeu de caractères ASCII (7 bits).
- BigEndianUnicode Utilise UTF-16 avec l’ordre d’octets big-endian.
- Par défaut Utilise l’encodage qui correspond à la page de code active du système (généralement ANSI).
- OEM Utilise l’encodage qui correspond à la page de code OEM actuelle du système.
- Unicode Utilise UTF-16 avec l’ordre d’octets little endian.
- UTF7 Utilise UTF-7.
- UTF8 Utilise UTF-8.
- UTF32 Utilise UTF-32 avec l’ordre d’octets little endian.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Header
Spécifie une autre ligne d'en-tête de colonne pour la chaîne importée. 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 forme de liste séparée par des virgules. 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 colonne qu’il n’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 colonne que 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 Header , 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Spécifie le chemin d'accès au fichier CSV à importer. Contrairement au paramètre Path, la valeur du paramètre LiteralPath est utilisée exactement telle qu'elle est tapée. 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 des séquences d’échappement.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Spécifie le chemin d'accès au fichier CSV à importer.
Vous pouvez également diriger un chemin vers Import-Csv
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseCulture
Utilise le séparateur de liste pour 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
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger une chaîne qui contient un chemin d’accès à Import-Csv
.
Sorties
Object
Cette applet de commande retourne les objets décrits par le contenu dans le fichier CSV.
Notes
É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 mettent en forme les versions non CSV du type d’objet.
Le résultat d’une Import-Csv
commande est une collection de chaînes qui forment un objet personnalisé de type table. Chaque ligne étant une chaîne distincte, vous pouvez utiliser la propriété Count de l’objet pour compter les lignes de table. Les colonnes sont les propriétés de l'objet et les éléments des 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 colonne. Les noms de colonne sont également les noms des propriétés des objets. La première ligne est interprétée comme étant les en-têtes de colonne, sauf si vous utilisez le paramètre Header pour spécifier des en-têtes de colonne. Si une ligne possède 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 la propriété manquants.
Dans le fichier CSV, chaque objet est représenté par une liste séparée par des virgules 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. Elles sont donc représentées par le nom de la valeur de la propriété. Export-Csv
n’exporte pas les méthodes de l’objet .