ConvertTo-Csv
Convertit les objets .NET en une série de chaînes de valeurs séparées par des caractères (CSV).
Syntax
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[<CommonParameters>]
Description
L’applet ConvertTo-CSV
de commande retourne une série de chaînes de valeurs séparées par des virgules (CSV) qui représentent les objets que vous envoyez. Vous pouvez ensuite utiliser l’applet de ConvertFrom-Csv
commande 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 Export-Csv
commande pour convertir des objets en chaînes CSV. Export-CSV
est similaire à ConvertTo-CSV
, sauf qu’il enregistre les chaînes CSV dans un fichier.
L’applet ConvertTo-CSV
de commande 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 montre comment convertir 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 Get-Process
de commande obtient l’objet Process et utilise le paramètre Name pour spécifier le processus PowerShell. L’objet process est envoyé vers le bas du pipeline à l’applet de ConvertTo-CSV
commande. L’applet ConvertTo-CSV
de commande 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 requis dans PowerShell 6.
Exemple 2 : Convertir un objet DateTime en CSV
Cet exemple montre comment convertir 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 Get-Date
de commande obtient l’objet DateTime et l’enregistre dans la $Date
variable . L’applet ConvertTo-Csv
de commande convertit l’objet DateTime en chaînes. Le paramètre InputObject utilise l’objet DateTime stocké dans la $Date
variable . Le paramètre Delimiter 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 requis dans PowerShell 6.
Exemple 3 : Convertir le journal des événements PowerShell au format 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 Get-Culture
de commande 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 Get-WinEvent
de commande 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 à l’applet de ConvertTo-Csv
commande . L’applet ConvertTo-Csv
de commande 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 délimiteur. Le paramètre NoTypeInformation supprime l’en-tête d’informations #TYPE de la sortie CSV et n’est pas requis dans PowerShell 6.
Exemple 4 : Convertir en CSV avec des guillemets autour de deux colonnes
Cet exemple montre comment convertir 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 montre comment convertir 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
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 (;
), placez-le entre guillemets simples.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Aliases: | ITI |
Position: | Named |
Default value: | #TYPE <Object> |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Spécifie les objets qui sont convertis en chaînes CSV. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui les obtient. Vous pouvez également diriger des objets vers ConvertTo-CSV
.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoTypeInformation
Supprime l’en-tête d’informations #TYPE de la sortie. Ce paramètre est devenu la valeur par défaut dans PowerShell 6.0 et est inclus pour la compatibilité descendante.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 entre guillemets. Ce paramètre a été ajouté dans PowerShell 7.0.
Type: | String[] |
Aliases: | QF |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
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: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseQuotes
Spécifie quand des guillemets sont utilisés dans les fichiers CSV. Les valeurs possibles sont les suivantes :
- Jamais - ne cite rien
- Toujours : tout citer (comportement par défaut)
- AsNeeded : uniquement les champs de guillemets qui contiennent un caractère délimiteur
Ce paramètre a été ajouté dans PowerShell 7.0.
Type: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliases: | UQ |
Position: | Named |
Default value: | Always |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger n’importe quel objet qui a un adaptateur ETS (Extended Type System) vers ConvertTo-CSV
.
Sorties
La sortie CSV est renvoyée sous forme d'une collection de chaînes.
Notes
Au format CSV, chaque objet est représenté par une liste séparée par des virgules 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 suivi 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 virgules.
- Les chaînes restantes contiennent des listes séparées par des virgules 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 #TYPE dans le fichier CSV et NoTypeInformation est implicite. IncludeTypeInformation peut être utilisé pour inclure les informations #TYPE et émuler le comportement par défaut d’avant ConvertTo-CSV
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, telle que représentée par deux virgules consécutives. Si les objets restants ont des propriétés supplémentaires, ces valeurs de propriété sont ignorées.