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).
Syntax
Import-Csv
[[-Delimiter] <Char>]
[-Path] <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[[-Delimiter] <Char>]
-LiteralPath <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[-Path] <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
-LiteralPath <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Description
L’applet Import-Csv
de commande crée des objets personnalisés de type table à partir des éléments dans les fichiers CSV. Chaque colonne du fichier CSV devient une propriété de l'objet personnalisé et les éléments stockés 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 directement 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 commande et ConvertFrom-Csv
les ConvertTo-Csv
applets de commande pour convertir des objets en chaînes CSV (et en arrière). Ces applets de commande sont identiques aux Export-CSV
applets de commande et Import-Csv
aux applets de commande, 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.
À compter de PowerShell 6.0, Import-Csv
prend désormais en charge le format de fichier journal étendu W3C.
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 des objets de processus vers 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 au 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 au pipeline à l’applet Format-Table
de commande et affiche les objets.
Exemple 2 : Spécifier le délimiteur
Cet exemple montre comment utiliser le paramètre Délimiteur 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 des objets de processus vers le pipeline vers 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 Délimiteur 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. Pour $P
la variable, le pipeline est envoyé à l’applet Format-Table
de commande.
Exemple 3 : Spécifier la culture actuelle pour le délimiteur
Cet exemple montre comment utiliser l’applet Import-Csv
de 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 des objets de processus vers le pipeline vers 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
façon à 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 s’exécute Get-Process
. Un objet de travail est envoyé au 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 v6 et versions ultérieures. 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 Get-Content
de 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 : 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 affiché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és 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 l’alias.
Exemple 6 : Importer un fichier CSV manquant une valeur
Cet exemple montre comment l’applet Import-Csv
de commande 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 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. La ligne d’en-tête ne contient pas de valeur entre ProjectName et Completed. 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 (;
) placez-le entre guillemets simples. Pour spécifier des caractères spéciaux échapés tels que l’onglet (`t
), placez-le 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 retourneront les chaînes CSV.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Spécifie l’encodage du fichier CSV importé. La valeur par défaut est utf8NoBOM
.
Les valeurs acceptables pour ce paramètre sont les suivantes :
ascii
: utilise l’encodage pour le jeu de caractères ASCII (7 bits).ansi
: utilise l’encodage pour la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.bigendianunicode
: encode au format UTF-16 à l’aide de l’ordre d’octet big-endian.bigendianutf32
: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.oem
: utilise l’encodage par défaut pour les programmes MS-DOS et console.unicode
: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.utf7
: encode au format UTF-7.utf8
: encode au format UTF-8.utf8BOM
: encode au format UTF-8 avec marque d’ordre d’octet (BOM)utf8NoBOM
: encode au format UTF-8 sans marque d’ordre d’octet (BOM)utf32
: encode au format UTF-32.
À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251
exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"
). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.
À compter de PowerShell 7.4, vous pouvez utiliser la Ansi
valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.
Remarque
UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7
le paramètre Encodage .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
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 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 colonne qu’il y a des colonnes de données, les colonnes de données restantes sont dis carte ed. 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 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 à Path, la valeur du paramètre LiteralPath est utilisée exactement comme elle est typé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 séquences d’échappement.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
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: | True |
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 à cette applet de commande.
Sorties
Cette applet de commande retourne les objets décrits par le contenu du fichier CSV.
Notes
PowerShell inclut les alias suivants pour Import-Csv
:
- Toutes les plateformes :
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 Import-Csv
commande 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 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 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 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. Elles sont donc représentées par le nom de la valeur de propriété. Export-Csv
n’exporte pas les méthodes de l’objet.
Import-Csv
prend également en charge le format de journal étendu W3C. Les lignes commençant #
par sont traitées comme des commentaires et ignorées, sauf si le commentaire commence #Fields:
par et contient la liste délimitée des noms de colonnes. Dans ce cas, l’applet de commande utilise ces noms de colonnes. Il s’agit du format standard pour Windows IIS et d’autres journaux de serveur web. Pour plus d’informations, consultez Format de fichier journal étendu.