ConvertTo-Csv
Converteert .NET-objecten naar een reeks tekenreeksen met door tekens gescheiden waarden (CSV).
Syntaxis
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Description
De ConvertTo-CSV
cmdlet retourneert een reeks tekenreeksen met door tekens gescheiden waarden (CSV) die de objecten vertegenwoordigen die u verzendt. Vervolgens kunt u de ConvertFrom-Csv
cmdlet gebruiken om objecten uit de CSV-tekenreeksen opnieuw te maken. De objecten die vanuit CSV worden geconverteerd, zijn tekenreekswaarden van de oorspronkelijke objecten die eigenschapswaarden en geen methoden bevatten.
U kunt de Export-Csv
cmdlet gebruiken om objecten te converteren naar CSV-tekenreeksen. Export-CSV
is vergelijkbaar met ConvertTo-CSV
, behalve dat de CSV-tekenreeksen worden opgeslagen in een bestand.
De ConvertTo-CSV
cmdlet heeft parameters voor het opgeven van een ander scheidingsteken dan een komma of het gebruik van de huidige cultuur als scheidingsteken.
Voorbeelden
Voorbeeld 1: Een object converteren naar CSV
In dit voorbeeld wordt een procesobject geconverteerd naar een CSV-tekenreeks.
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", ...
De Get-Process
cmdlet haalt het procesobject op en gebruikt de parameter Name om het PowerShell-proces op te geven. Het procesobject wordt via de pijplijn naar de ConvertTo-CSV
cmdlet verzonden. De ConvertTo-CSV
cmdlet converteert het object naar CSV-tekenreeksen. De parameter NoTypeInformation verwijdert de #TYPE informatieheader uit de CSV-uitvoer en is niet vereist in PowerShell 6.
Voorbeeld 2: Een DateTime-object converteren naar CSV
In dit voorbeeld wordt een DateTime-object geconverteerd naar een CSV-tekenreeks.
$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"
De Get-Date
cmdlet haalt het DateTime-object op en slaat het op in de $Date
variabele. De ConvertTo-Csv
cmdlet converteert het DateTime-object naar tekenreeksen. De parameter InputObject maakt gebruik van het DateTime-object dat is opgeslagen in de $Date
variabele. De parameter Scheidingsteken geeft een puntkomma op om de tekenreekswaarden te scheiden. De parameter NoTypeInformation verwijdert de #TYPE informatieheader uit de CSV-uitvoer en is niet vereist in PowerShell 6.
Voorbeeld 3: het PowerShell-gebeurtenislogboek converteren naar CSV
In dit voorbeeld wordt het Windows-gebeurtenislogboek voor PowerShell geconverteerd naar een reeks CSV-tekenreeksen.
(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", ...
De Get-Culture
cmdlet maakt gebruik van de geneste eigenschappen TextInfo en ListSeparator en geeft het standaardlijstscheidingsteken van de huidige cultuur weer. De Get-WinEvent
cmdlet haalt de gebeurtenislogboekobjecten op en gebruikt de parameter LogName om de naam van het logboekbestand op te geven. De gebeurtenislogboekobjecten worden naar de ConvertTo-Csv
cmdlet verzonden. De ConvertTo-Csv
cmdlet converteert de gebeurtenislogboekobjecten naar een reeks CSV-tekenreeksen. De parameter UseCulture gebruikt het standaardlijstscheidingsteken van de huidige cultuur als scheidingsteken. De parameter NoTypeInformation verwijdert de #TYPE informatieheader uit de CSV-uitvoer en is niet vereist in PowerShell 6.
Voorbeeld 4: Converteren naar CSV met aanhalingstekens rond twee kolommen
In dit voorbeeld wordt een DateTime-object geconverteerd naar een CSV-tekenreeks.
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
Voorbeeld 5: Converteren naar CSV met alleen aanhalingstekens wanneer dat nodig is
In dit voorbeeld wordt een DateTime-object geconverteerd naar een CSV-tekenreeks.
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
Voorbeeld 6: Hashtables converteren naar CSV
Wanneer u hashtabellen in PowerShell 7.2 en hoger converteert naar CSV, worden de sleutels van de eerste hashtabel geserialiseerd en gebruikt als headers in de uitvoer.
$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"
Voorbeeld 7: Hashtables converteren naar CSV met extra eigenschappen
Wanneer u in PowerShell 7.2 en hoger een hashtabel converteert waaraan extra eigenschappen zijn toegevoegd Add-Member
of Select-Object
als koptekst in de CSV-uitvoer worden toegevoegd.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
Elke hashtabel heeft een eigenschap met de naam ExtraProp
toegevoegd Add-Member
en vervolgens geconverteerd naar CSV. U kunt zien ExtraProp
dat het nu een header is in de uitvoer.
Als een toegevoegde eigenschap dezelfde naam heeft als een sleutel uit de hashtabel, heeft de sleutel voorrang en wordt alleen de sleutel geconverteerd naar CSV.
Parameters
-Delimiter
Hiermee geeft u het scheidingsteken op om de eigenschapswaarden in CSV-tekenreeksen te scheiden. De standaardwaarde is een komma (,
). Voer een teken in, zoals een dubbele punt (:
). Als u een puntkomma (;
) wilt opgeven, plaatst u deze tussen enkele aanhalingstekens.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-IncludeTypeInformation
Wanneer deze parameter wordt gebruikt, bevat #TYPE
de eerste regel van de uitvoer de volledig gekwalificeerde naam van het objecttype. Bijvoorbeeld: #TYPE System.Diagnostics.Process
.
Deze parameter is geïntroduceerd in PowerShell 6.0.
Type: | SwitchParameter |
Aliassen: | ITI |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-InputObject
Hiermee geeft u de objecten die worden geconverteerd naar CSV-tekenreeksen. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald. U kunt objecten ook doorsluisen naar ConvertTo-CSV
.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-NoHeader
Wanneer deze parameter wordt gebruikt, schrijft de cmdlet geen veldnamenrij met de kolomnamen naar de uitvoer.
Deze parameter is toegevoegd in PowerShell 7.4.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-NoTypeInformation
Hiermee verwijdert u de #TYPE
informatieheader uit de uitvoer. Deze parameter werd de standaardwaarde in PowerShell 6.0 en is opgenomen voor achterwaartse compatibiliteit.
Type: | SwitchParameter |
Aliassen: | NTI |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-QuoteFields
Hiermee geeft u de namen op van de kolommen die moeten worden geciteerd. Wanneer deze parameter wordt gebruikt, worden alleen de opgegeven kolommen geciteerd. Deze parameter is toegevoegd in PowerShell 7.0.
Type: | String[] |
Aliassen: | QF |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-UseCulture
Hiermee gebruikt u het lijstscheidingsteken voor de huidige cultuur als het scheidingsteken voor items. Gebruik de volgende opdracht om het lijstscheidingsteken voor een cultuur te vinden: (Get-Culture).TextInfo.ListSeparator
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-UseQuotes
Hiermee geeft u op wanneer aanhalingstekens worden gebruikt in de CSV-bestanden. Mogelijke waarden zijn:
- Nooit - citeer niets
- Altijd - alles citeren (standaardgedrag)
- AsNeeded: alleen aanhalingstekens met een scheidingsteken, dubbel aanhalingsteken of nieuwlijnteken
Deze parameter is toegevoegd in PowerShell 7.0.
Type: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliassen: | UQ |
Position: | Named |
Default value: | Always |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt elk object met een ETS-adapter (Extended Type System) doorsluisen naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert een of meer tekenreeksen die elk geconverteerd object vertegenwoordigen.
Notities
In CSV-indeling wordt elk object vertegenwoordigd door een door tekens gescheiden lijst met de eigenschapswaarde. De eigenschapswaarden worden geconverteerd naar tekenreeksen met de methode ToString() van het object. De tekenreeksen worden vertegenwoordigd door de naam van de eigenschapswaarde. ConvertTo-CSV
exporteert de methoden van het object niet.
De CSV-tekenreeksen worden als volgt uitgevoerd:
- Als IncludeTypeInformation wordt gebruikt, bestaat de eerste tekenreeks uit #TYPE gevolgd door de volledig gekwalificeerde naam van het objecttype. Bijvoorbeeld #TYPE System.Diagnostics.Process.
- Als IncludeTypeInformation niet wordt gebruikt, bevat de eerste tekenreeks de kolomkoppen. De kopteksten bevatten de eigenschapsnamen van het eerste object als een door tekens gescheiden lijst.
- De resterende tekenreeksen bevatten door tekens gescheiden lijsten van de eigenschapswaarden van elk object.
Vanaf PowerShell 6.0 is het standaardgedrag ConvertTo-CSV
om de #TYPE gegevens in het CSV-bestand niet op te nemen en NoTypeInformation wordt geïmpliceerd. IncludeTypeInformation kan worden gebruikt om de #TYPE informatie op te nemen en het standaardgedrag van ConvertTo-CSV
vóór PowerShell 6.0 te emuleren.
Wanneer u meerdere objecten naar ConvertTo-CSV
verzendt, ConvertTo-CSV
worden de tekenreeksen geordeerd op basis van de eigenschappen van het eerste object dat u verzendt. Als de resterende objecten geen van de opgegeven eigenschappen hebben, is de eigenschapswaarde van dat object Null, zoals vertegenwoordigd door twee opeenvolgende komma's. Als de resterende objecten aanvullende eigenschappen hebben, worden deze eigenschapswaarden genegeerd.