Partager via


ConvertTo-Csv

Convertit les objets .NET en une série de chaînes de valeurs séparées par des caractères (CSV).

Syntaxe

Delimiter (Par défaut)

ConvertTo-Csv
    [-InputObject] <PSObject>
    [[-Delimiter] <Char>]
    [-IncludeTypeInformation]
    [-NoTypeInformation]
    [-QuoteFields <String[]>]
    [-UseQuotes <QuoteKind>]
    [-NoHeader]
    [<CommonParameters>]

UseCulture

ConvertTo-Csv
    [-InputObject] <PSObject>
    [-UseCulture]
    [-IncludeTypeInformation]
    [-NoTypeInformation]
    [-QuoteFields <String[]>]
    [-UseQuotes <QuoteKind>]
    [-NoHeader]
    [<CommonParameters>]

Description

L’applet de commande ConvertTo-Csv retourne une série de chaînes de valeurs séparées par des caractères (CSV) qui représentent les objets que vous envoyez. Vous pouvez ensuite utiliser l’applet de commande ConvertFrom-Csv pour recréer des objets à partir des chaînes CSV. Les objets convertis à partir de CSV sont des valeurs de chaîne des objets d’origine qui contiennent des valeurs de propriété et aucune méthode.

Vous pouvez utiliser l’applet de commande Export-Csv pour convertir des objets en chaînes CSV. Export-Csv est similaire à ConvertTo-Csv, sauf qu’elle enregistre les chaînes CSV dans un fichier.

L’applet de commande ConvertTo-Csv a des paramètres pour spécifier un délimiteur autre qu’une virgule ou utiliser la culture actuelle comme délimiteur.

Exemples

Exemple 1 : Convertir un objet en CSV

Cet exemple convertit un objet Process en chaîne CSV.

Get-Process -Name pwsh | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"pwsh","8","950","2204001161216","100925440","59686912","67104", ...

L’applet de commande obtient l’objet process et utilise le paramètre Name pour spécifier le processus PowerShell. L'objet processus est envoyé dans le pipeline vers l'applet de commande ConvertTo-Csv. L’applet de commande ConvertTo-Csv convertit l’objet en chaînes CSV. Le paramètre NoTypeInformation supprime l’en-tête d’informations #TYPE de la sortie CSV et n’est pas obligatoire dans PowerShell 6.

Exemple 2 : Convertir un objet DateTime en CSV

Cet exemple convertit un objet DateTime en chaîne CSV.

$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation
"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"

L’applet de commande Get-Date obtient l’objet DateTime et l’enregistre dans la variable $Date. L’applet de commande ConvertTo-Csv convertit l’objet DateTime en chaînes. Le paramètre InputObject utilise l’objet DateTime stocké dans la variable $Date. Le paramètre délimiteur spécifie un point-virgule pour séparer les valeurs de chaîne. Le paramètre NoTypeInformation supprime l’en-tête d’informations #TYPE de la sortie CSV et n’est pas obligatoire dans PowerShell 6.

Exemple 3 : Convertir le journal des événements PowerShell en CSV

Cet exemple convertit le journal des événements Windows pour PowerShell en une série de chaînes CSV.

(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'PowerShellCore/Operational' |
    ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error""4100","1",,"3","106","19","0","31716","PowerShellCore", ...

L’applet de commande Get-Culture utilise les propriétés imbriquées TextInfo et ListSeparator et affiche le séparateur de liste par défaut de la culture actuelle. L’applet de commande Get-WinEvent obtient les objets du journal des événements et utilise le paramètre LogName pour spécifier le nom du fichier journal. Les objets du journal des événements sont envoyés dans le pipeline vers l’applet de commande ConvertTo-Csv. L’applet de commande ConvertTo-Csv convertit les objets du journal des événements en une série de chaînes CSV. Le paramètre UseCulture utilise le séparateur de liste par défaut de la culture actuelle comme séparateur. Le paramètre NoTypeInformation supprime l’en-tête d’informations #TYPE de la sortie CSV et n’est pas obligatoire dans PowerShell 6.

Exemple 4 : Convertir en CSV avec des guillemets autour de deux colonnes

Cet exemple convertit un objet DateTime en chaîne CSV.

Get-Date | ConvertTo-Csv -QuoteFields "DateTime","Date"
DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019

Exemple 5 : Convertir en CSV avec des guillemets uniquement si nécessaire

Cet exemple convertit un objet DateTime en chaîne CSV.

Get-Date | ConvertTo-Csv -UseQuotes AsNeeded
DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019

Exemple 6 : Convertir des tables de hachage en CSV

Dans PowerShell 7.2 et versions ultérieures, lorsque vous convertissez des tables de hachage en CSV, les clés de la première table de hachage sont sérialisées et utilisées comme en-têtes dans la sortie.

$person1 = @{
    Name = 'John Smith'
    Number = 1
}

$person2 = @{
    Name = 'Jane Smith'
    Number = 2
}

$allPeople = $person1, $person2
$allPeople | ConvertTo-Csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"

Exemple 7 : Conversion de tables de hachage en CSV avec des propriétés supplémentaires

Dans PowerShell 7.2 et versions ultérieures, lorsque vous convertissez une table de hachage contenant des propriétés supplémentaires ajoutées avec Add-Member ou Select-Object les propriétés supplémentaires sont également ajoutées en tant qu’en-tête dans la sortie CSV.

$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"

Chaque table de hachage a une propriété nommée ExtraProp ajoutée par Add-Member, puis convertie en CSV. Vous pouvez voir que ExtraProp est désormais un en-tête dans le résultat.

Si une propriété ajoutée a le même nom qu’une clé à partir de la table de hachage, la clé est prioritaire et seule la clé est convertie en CSV.

Paramètres

-Delimiter

Spécifie le délimiteur pour séparer les valeurs de propriété dans les chaînes 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.

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

-IncludeTypeInformation

Lorsque ce paramètre est utilisé la première ligne de la sortie contient #TYPE suivi du nom complet du type d’objet. Par exemple : #TYPE System.Diagnostics.Process.

Ce paramètre a été introduit dans PowerShell 6.0.

Propriétés du paramètre

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

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

-InputObject

Spécifie les objets qui sont convertis en chaînes CSV. Entrez une variable qui contient les objets ou tapez une commande ou une expression qui obtient les objets. Vous pouvez également diriger des objets vers ConvertTo-Csv.

Propriétés du paramètre

Type:PSObject
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:True
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-NoHeader

Lorsque ce paramètre est utilisé, l’applet de commande n’écrit pas de ligne d’en-tête contenant les noms de colonnes dans la sortie.

Ce paramètre a été ajouté dans PowerShell 7.4.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
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

-NoTypeInformation

Supprime l’en-tête d’information #TYPE du résultat. Ce paramètre est devenu la valeur par défaut dans PowerShell 6.0 et est inclus pour la compatibilité descendante.

Propriétés du paramètre

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

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

-QuoteFields

Spécifie les noms des colonnes qui doivent être entre guillemets. Lorsque ce paramètre est utilisé, seules les colonnes spécifiées sont mises entre guillemets. Ce paramètre a été ajouté dans PowerShell 7.0.

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:QF

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

-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:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

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

-UseQuotes

Spécifie le moment où les guillemets sont utilisés dans les fichiers CSV. Les valeurs possibles sont les suivantes :

  • Jamais - ne citez rien
  • Toujours - citer tout (comportement par défaut)
  • AsNeeded : n’entoure de guillemets que les champs contenant un caractère délimiteur, un guillemet ou un saut de ligne

Ce paramètre a été ajouté dans PowerShell 7.0.

Propriétés du paramètre

Type:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Valeur par défaut:Always
Prend en charge les caractères génériques:False
DontShow:False
Alias:UQ

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

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

PSObject

Vous pouvez diriger n’importe quel objet disposant d’un adaptateur ETS (Extended Type System) vers cette applet de commande.

Sorties

String

Cette applet de commande retourne une ou plusieurs chaînes représentant chaque objet converti.

Notes

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

Les chaînes CSV sont sorties comme suit :

  • Si IncludeTypeInformation est utilisé, la première chaîne se compose de #TYPE suivie du nom complet du type d’objet. Par exemple, #TYPE System.Diagnostics.Process.
  • Si IncludeTypeInformation n’est pas utilisé, la première chaîne inclut les en-têtes de colonne. Les en-têtes contiennent les noms de propriétés du premier objet sous la forme d’une liste séparée par des caractères.
  • Les chaînes restantes contiennent des listes séparées par des caractères des valeurs de propriété de chaque objet.

À compter de PowerShell 6.0, le comportement par défaut de ConvertTo-Csv consiste à ne pas inclure les informations de #TYPE dans le fichier CSV et NoTypeInformation est implicite. IncludeTypeInformation peut être utilisé pour inclure les informations de #TYPE et émuler le comportement par défaut de ConvertTo-Csv avant PowerShell 6.0.

Lorsque vous envoyez plusieurs objets à ConvertTo-Csv, ConvertTo-Csv trie les chaînes en fonction des propriétés du premier objet que vous envoyez. Si les objets restants n’ont pas l’une des propriétés spécifiées, la valeur de propriété de cet objet est Null, comme représenté par deux virgules consécutives. Si les objets restants ont des propriétés supplémentaires, ces valeurs de propriété sont ignorées.