Partilhar via


ConvertTo-Csv

Converte objetos .NET em uma série de cadeias de caracteres de valor separado por caracteres (CSV).

Sintaxe

Delimiter (Predefinição)

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

UseCulture

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

Description

O ConvertTo-CSV cmdlet retorna uma série de cadeias de caracteres CSV (valores separados por vírgula) que representam os objetos enviados. Em seguida, você pode usar o cmdlet ConvertFrom-Csv para recriar objetos a partir 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 DateTime objeto armazenado na variável $Date. O parâmetro Delimiter 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 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 do 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 cotações apenas 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

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.

Propriedades dos parâmetros

Tipo:Char
Default value:comma (,)
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

Delimiter
Position:1
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-IncludeTypeInformation

Quando esse parâmetro é usado, a primeira linha da saída contém #TYPE seguida pelo nome totalmente qualificado do tipo de objeto. Por exemplo, #TYPE System.Diagnostics.Process.

Esse parâmetro foi introduzido no PowerShell 6.0.

Propriedades dos parâmetros

Tipo:SwitchParameter
Suporta carateres universais:False
NãoMostrar:False
Aliases:ITI

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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 obtenha os objetos. Você também pode canalizar objetos para ConvertTo-CSV.

Propriedades dos parâmetros

Tipo:PSObject
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-NoTypeInformation

Remove o cabeçalho de informações #TYPE da saída. Esse parâmetro se tornou o padrão no PowerShell 6.0 e está incluído para compatibilidade com versões anteriores.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:NTI

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-QuoteFields

Especifica os nomes das colunas que devem ser citadas. Quando esse parâmetro é usado, apenas as colunas especificadas são citadas. Este parâmetro foi adicionado no PowerShell 7.0.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:QF

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-UseCulture

Usa o separador de lista para a cultura atual como o delimitador de item. Para localizar o separador de lista para uma cultura, use o seguinte comando: (Get-Culture).TextInfo.ListSeparator.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

UseCulture
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-UseQuotes

Especifica quando as aspas são usadas nos arquivos CSV. Os valores possíveis são:

  • Nunca - não cite nada
  • Sempre - citar tudo (comportamento padrão)
  • AsNeeded - apenas campos de aspas que contêm um caractere delimitador

Este parâmetro foi adicionado no PowerShell 7.0.

Propriedades dos parâmetros

Tipo:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Default value:Always
Suporta carateres universais:False
NãoMostrar:False
Aliases:UQ

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

PSObject

Você pode canalizar qualquer objeto que tenha um adaptador ETS (Extended Type System) para .ConvertTo-CSV

Saídas

String

A saída CSV é retornada como uma coleção de cadeias de caracteres.

Notas

No formato CSV, cada objeto é representado por uma lista separada por vírgulas 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ídas da seguinte maneira:

  • Se IncludeTypeInformation for usada, a primeira cadeia de caracteres consistirá em #TYPE seguida pelo nome totalmente qualificado do tipo de objeto. Por exemplo, #TYPE System.Diagnostics.Process.
  • Se IncludeTypeInformation não for usada, 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 vírgula.
  • As cadeias de caracteres restantes contêm listas separadas por vírgulas 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 está implícito. IncludeTypeInformation pode ser usado para incluir as informações de #TYPE e emular o comportamento padrão do ConvertTo-CSV anterior ao 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 enviado. Se os objetos restantes não tiverem uma das propriedades especificadas, o valor da propriedade desse objeto será Null, conforme representado por duas vírgulas consecutivas. Se os objetos restantes tiverem propriedades adicionais, esses valores de propriedade serão ignorados.