ConvertTo-Csv
Converte objetos .NET em uma série de cadeias de caracteres CSV (valor separado por caractere).
Sintaxe
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
O cmdlet ConvertTo-CSV
retorna uma série de cadeias de caracteres CSV (valor separado por caractere) que representam os objetos que você envia. Em seguida, você pode usar o cmdlet ConvertFrom-Csv
para recriar objetos das cadeias de caracteres CSV. Os objetos convertidos de CSV são valores de cadeia de caracteres dos objetos originais que contêm valores de propriedade e nenhum método.
Você pode usar o cmdlet Export-Csv
para converter objetos em cadeias de caracteres CSV.
Export-CSV
é semelhante a ConvertTo-CSV
, exceto que salva as cadeias de caracteres CSV em um arquivo.
O cmdlet ConvertTo-CSV
tem parâmetros para especificar um delimitador diferente de uma vírgula ou usar a cultura atual como delimitador.
Exemplos
Exemplo 1: Converter um objeto em CSV
Este exemplo converte um objeto Process em uma cadeia de caracteres 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", ...
O cmdlet Get-Process
obtém o objeto Process e usa o parâmetro Name para especificar o processo do PowerShell. O objeto de processo é enviado pelo pipeline para o cmdlet ConvertTo-CSV
. O cmdlet ConvertTo-CSV
converte o objeto em cadeias de caracteres CSV. O parâmetro NoTypeInformation remove o cabeçalho de informações #TYPE da saída CSV e não é necessário no PowerShell 6.
Exemplo 2: Converter um objeto DateTime em CSV
Este exemplo converte um objeto DateTime em uma cadeia de caracteres 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"
O cmdlet Get-Date
obtém o objeto DateTime e o salva na variável $Date
. O cmdlet ConvertTo-Csv
converte o objeto DateTime em cadeias de caracteres. O parâmetro InputObject usa o objeto DateTime armazenado na variável $Date
. O parâmetro Delimitador especifica um ponto e vírgula para separar os valores da cadeia de caracteres. O parâmetro NoTypeInformation remove o cabeçalho de informações #TYPE da saída CSV e não é necessário no PowerShell 6.
Exemplo 3: Converter o log de eventos do PowerShell em CSV
Este exemplo converte o log de eventos do Windows para o PowerShell em uma série de cadeias de caracteres 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", ...
O cmdlet Get-Culture
usa as propriedades aninhadas TextInfo e ListSeparator e exibe o separador de lista padrão da cultura atual. O cmdlet Get-WinEvent
obtém os objetos de log de eventos e usa o parâmetro LogName para especificar o nome do arquivo de log. Os objetos de log de eventos são enviados pelo pipeline para o cmdlet ConvertTo-Csv
. O cmdlet ConvertTo-Csv
converte os objetos de log de eventos em uma série de cadeias de caracteres CSV. O parâmetro UseCulture usa o separador de lista padrão da cultura atual como delimitador. O parâmetro NoTypeInformation remove o cabeçalho de informações #TYPE da saída CSV e não é necessário no PowerShell 6.
Exemplo 4: Converter em CSV com aspas em torno de duas colunas
Este exemplo converte um objeto DateTime em uma cadeia de caracteres 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
Exemplo 5: Converter em CSV com aspas somente quando necessário
Este exemplo converte um objeto DateTime em uma cadeia de caracteres 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
Exemplo 6: Converter hashtables em CSV
No PowerShell 7.2 e superior, quando você converte hashtables em CSV, as chaves do primeiro hashtable são serializadas e usadas como cabeçalhos na saída.
$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"
Exemplo 7: Convertendo hashtables em CSV com propriedades adicionais
No PowerShell 7.2 e superior, quando você converte um hashtable que tem propriedades adicionais adicionadas com Add-Member
ou Select-Object
as propriedades adicionais também são adicionadas como um cabeçalho na saída CSV.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
Cada hashtable tem uma propriedade chamada ExtraProp
adicionada por Add-Member
e depois convertida em CSV. Você pode ver ExtraProp
agora é um cabeçalho na saída.
Se uma propriedade adicionada tiver o mesmo nome que uma chave do hashtable, a chave terá precedência e somente a chave será convertida em CSV.
Parâmetros
-Delimiter
Especifica o delimitador para separar os valores de propriedade em cadeias de caracteres CSV. O padrão é uma vírgula (,
). Insira um caractere, como dois-pontos (:
). Para especificar um ponto-e-vírgula (;
) coloque-o entre aspas simples.
Tipo: | Char |
Cargo: | 1 |
Valor padrão: | comma (,) |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-IncludeTypeInformation
Quando esse parâmetro é usado, a primeira linha da saída contém #TYPE
seguido pelo nome totalmente qualificado do tipo de objeto. Por exemplo, #TYPE System.Diagnostics.Process
.
Esse parâmetro foi introduzido no PowerShell 6.0.
Tipo: | SwitchParameter |
Aliases: | ITI |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-InputObject
Especifica os objetos que são convertidos em cadeias de caracteres CSV. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtém os objetos. Você também pode redirecionar objetos para ConvertTo-CSV
.
Tipo: | PSObject |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-NoHeader
Quando esse parâmetro é usado, o cmdlet não grava uma linha de cabeçalho contendo os nomes de coluna na saída.
Esse parâmetro foi adicionado no PowerShell 7.4.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-NoTypeInformation
Remove o cabeçalho de informações #TYPE
da saída. Esse parâmetro tornou-se o padrão no PowerShell 6.0 e está incluído para compatibilidade com versões anteriores.
Tipo: | SwitchParameter |
Aliases: | NTI |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-QuoteFields
Especifica os nomes das colunas que devem ser entre aspas. Quando esse parâmetro é usado apenas as colunas especificadas são entre aspas. Esse parâmetro foi adicionado no PowerShell 7.0.
Tipo: | String[] |
Aliases: | QF |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-UseCulture
Usa o separador de lista para a cultura atual como delimitador de item. Para localizar o separador de lista para uma cultura, use o seguinte comando: (Get-Culture).TextInfo.ListSeparator
.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-UseQuotes
Especifica quando aspas são usadas nos arquivos CSV. Os valores possíveis são:
- Nunca - não assopa nada
- Always – aspas de tudo (comportamento padrão)
- AsNeeded - somente os campos de aspas que contêm um caractere delimitador, uma aspa dupla ou um caractere de nova linha
Esse parâmetro foi adicionado no PowerShell 7.0.
Tipo: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliases: | UQ |
Cargo: | Named |
Valor padrão: | Always |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Você pode canalizar qualquer objeto que tenha um adaptador ETS (Sistema de Tipo Estendido) para este cmdlet.
Saídas
Esse cmdlet retorna uma ou mais cadeias de caracteres que representam cada objeto convertido.
Observações
No formato CSV, cada objeto é representado por uma lista separada por caracteres de seu valor de propriedade. Os valores de propriedade são convertidos em cadeias de caracteres usando o método ToString() do objeto. As cadeias de caracteres são representadas pelo nome do valor da propriedade.
ConvertTo-CSV
não exporta os métodos do objeto.
As cadeias de caracteres CSV são saída da seguinte maneira:
- Se IncludeTypeInformation for usado, a primeira cadeia de caracteres consistirá em #TYPE seguida pelo nome totalmente qualificado do tipo de objeto. Por exemplo, #TYPESystem.Diagnostics.Process .
- Se IncludeTypeInformation não for usado, a primeira cadeia de caracteres incluirá os cabeçalhos de coluna. Os cabeçalhos contêm os nomes de propriedade do primeiro objeto como uma lista separada por caracteres.
- As cadeias de caracteres restantes contêm listas separadas por caracteres dos valores de propriedade de cada objeto.
A partir do PowerShell 6.0, o comportamento padrão do ConvertTo-CSV
é não incluir as informações de #TYPE no CSV e NoTypeInformation.
IncludeTypeInformation pode ser usado para incluir as informações de #TYPE e emular o comportamento padrão de ConvertTo-CSV
antes do PowerShell 6.0.
Quando você envia vários objetos para ConvertTo-CSV
, ConvertTo-CSV
ordena as cadeias de caracteres com base nas propriedades do primeiro objeto que você envia. Se os objetos restantes não tiverem uma das propriedades especificadas, o valor da propriedade desse objeto será Nulo, conforme representado por duas vírgulas consecutivas. Se os objetos restantes tiverem propriedades adicionais, esses valores de propriedade serão ignorados.