Export-Csv

Converte objetos em uma série de cadeias de caracteres de valor separado por caractere (CSV) e salva as cadeias de caracteres em um arquivo.

Syntax

Export-Csv
      [[-Path] <string>]
      [[-Delimiter] <char>]
      -InputObject <psobject>
      [-LiteralPath <string>]
      [-Force]
      [-NoClobber]
      [-Encoding <string>]
      [-Append]
      [-NoTypeInformation]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Export-Csv
      [[-Path] <string>]
      -InputObject <psobject>
      [-LiteralPath <string>]
      [-Force]
      [-NoClobber]
      [-Encoding <string>]
      [-Append]
      [-UseCulture]
      [-NoTypeInformation]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

O Export-CSV cmdlet cria um arquivo CSV dos objetos enviados. Cada objeto é uma linha que inclui uma lista separada por caracteres dos valores de propriedade do objeto. Você pode usar o Export-CSV cmdlet para criar planilhas e compartilhar dados com programas que aceitam arquivos CSV como entrada.

Não formate objetos antes de enviá-los ao Export-CSV cmdlet. Se Export-CSV receber objetos formatados, o arquivo CSV conterá as propriedades de formato em vez das propriedades de objeto. Para exportar apenas as propriedades selecionadas de um objeto, use o Select-Object cmdlet.

Exemplos

Exemplo 1: Exportar propriedades do processo para um arquivo CSV

Este exemplo seleciona objetos Process com propriedades específicas, exporta os objetos para um arquivo CSV.

Get-Process -Name WmiPrvSE |
    Select-Object -Property BasePriority,Id,SessionId,WorkingSet |
    Export-Csv -Path .\WmiData.csv -NoTypeInformation
Import-Csv -Path .\WmiData.csv

BasePriority Id    SessionId WorkingSet
------------ --    --------- ----------
8            976   0         20267008
8            2292  0         36786176
8            3816  0         30351360
8            8604  0         15011840
8            10008 0         8830976
8            11764 0         14237696
8            54632 0         9502720

O Get-Process cmdlet obtém os objetos Process . O parâmetro Name filtra a saída para incluir somente os objetos de processo WmiPrvSE. Os objetos de processo são enviados pelo pipeline para o Select-Object cmdlet. Select-Object usa o parâmetro Property para selecionar um subconjunto de propriedades do objeto de processo. Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o WmiData.csv arquivo é salvo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6. O Import-Csv cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 2: Exportar processos para um arquivo delimitado por vírgulas

Este exemplo obtém objetos Process e exporta os objetos para um arquivo CSV.

Get-Process | Export-Csv -Path .\Processes.csv -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...

O Get-Process cmdlet obtém objetos Process . Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o Processes.csv arquivo é salvo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 3: Exportar processos para um arquivo delimitado por ponto-e-vírgula

Este exemplo obtém objetos Process e exporta os objetos para um arquivo com um delimitador de ponto-e-vírgula.

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter ';' -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...

O Get-Process cmdlet obtém objetos Process . Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o Processes.csv arquivo é salvo no diretório atual. 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 do #TYPE da saída CSV e não é necessário no PowerShell 6. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 4: Exportar processos usando o separador de lista da cultura atual

Este exemplo obtém objetos Process e exporta os objetos para um arquivo. O delimitador é o separador de lista da cultura atual.

(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...

O Get-Culture cmdlet usa as propriedades aninhadas TextInfo e ListSeparator e exibe o separador de lista padrão da cultura atual. O Get-Process cmdlet obtém objetos Process . Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o Processes.csv arquivo é salvo no diretório atual. 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 do #TYPE da saída CSV e não é necessário no PowerShell 6. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 5: Exportar processos com informações de tipo

Este exemplo explica como incluir as informações de cabeçalho #TYPE em um arquivo CSV. O cabeçalho #TYPE é o padrão em versões anteriores ao PowerShell 6.0.

Get-Process | Export-Csv -Path .\Processes.csv
Get-Content -Path .\Processes.csv

#TYPE System.Diagnostics.Process
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","507","2203595001856","35139584","20934656","29504", ...

O Get-Process cmdlet obtém objetos Process . Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o Processes.csv arquivo é salvo no diretório atual. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 6: Exportar e acrescentar objetos a um arquivo CSV

Este exemplo descreve como exportar objetos para um arquivo CSV e usar o parâmetro Append para adicionar objetos a um arquivo existente.

$AppService = (Get-Service -DisplayName *Application* | Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* | Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path .\Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv

"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"

O Get-Service cmdlet obtém objetos de serviço. O parâmetro DisplayName retorna serviços que contêm a palavra Application. Os objetos de serviço são enviados pelo pipeline para o Select-Object cmdlet. Select-Object usa o parâmetro Property para especificar as propriedades DisplayName e Status . A $AppService variável armazena os objetos.

Os $AppService objetos são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de serviço em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o Services.csv arquivo é salvo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Os Get-Service cmdlets e Select-Object são repetidos para serviços que contêm a palavra Windows. A $WinService variável armazena os objetos de serviço. O Export-Csv cmdlet usa o parâmetro Append para especificar que os $WinService objetos sejam adicionados ao arquivo existente Services.csv . O Get-Content cmdlet é repetido para exibir o arquivo atualizado que inclui os dados acrescentados.

Exemplo 7: O cmdlet Format em um pipeline cria resultados inesperados

Este exemplo mostra por que é importante não usar um cmdlet de formato em um pipeline. Quando uma saída inesperada for recebida, solucione problemas da sintaxe do pipeline.

Get-Date | Select-Object -Property DateTime, Day, DayOfWeek, DayOfYear |
 Export-Csv -Path .\DateTime.csv -NoTypeInformation
Get-Content -Path .\DateTime.csv

"DateTime","Day","DayOfWeek","DayOfYear"
"Wednesday, January 2, 2019 14:59:34","2","Wednesday","2"

Get-Date | Format-Table -Property DateTime, Day, DayOfWeek, DayOfYear |
 Export-Csv -Path .\FTDateTime.csv -NoTypeInformation
Get-Content -Path .\FTDateTime.csv

"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo", ...
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format. ...
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
"4ec4f0187cb04f4cb6973460dfe252df",,,,,
"cf522b78d86c486691226b40aa69e95c",,,,,

O Get-Date cmdlet obtém o objeto DateTime . O objeto é enviado pelo pipeline para o Select-Object cmdlet. Select-Object usa o parâmetro Property para selecionar um subconjunto de propriedades de objeto. O objeto é enviado pelo pipeline para o Export-Csv cmdlet. Export-Csv converte o objeto em um formato CSV. O parâmetro Path especifica que o DateTime.csv arquivo é salvo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo CSV localizado no diretório atual.

Quando o Format-Table cmdlet é usado no pipeline para selecionar propriedades, resultados inesperados são recebidos. Format-Table envia objetos de formato de tabela pelo pipeline para o Export-Csv cmdlet em vez do objeto DateTime . Export-Csv converte os objetos de formato de tabela em uma série de cadeias de caracteres CSV. O Get-Content cmdlet exibe o arquivo CSV que contém os objetos de formato de tabela.

Exemplo 8: Usando o parâmetro Force para substituir arquivos somente leitura

Este exemplo cria um arquivo vazio, somente leitura e usa o parâmetro Force para atualizar o arquivo.

New-Item -Path .\ReadOnly.csv -ItemType File
Set-ItemProperty -Path .\ReadOnly.csv -Name IsReadOnly -Value $true
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation

Export-Csv : Access to the path 'C:\ReadOnly.csv' is denied.
At line:1 char:15
+ Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
+               ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand

Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation -Force
Get-Content -Path .\ReadOnly.csv

"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...

O New-Item cmdlet usa os parâmetros Path e ItemType para criar o ReadOnly.csv arquivo no diretório atual. O Set-ItemProperty cmdlet usa os parâmetros Name e Value para alterar a propriedade IsReadOnly do arquivo para true. O Get-Process cmdlet obtém objetos Process . Os objetos de processo são enviados pelo pipeline para o Export-Csv cmdlet. Export-Csv converte os objetos de processo em uma série de cadeias de caracteres CSV. O parâmetro Path especifica que o ReadOnly.csv arquivo é salvo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6. A saída mostra que o arquivo não foi gravado porque o acesso foi negado.

O parâmetro Force é adicionado ao Export-Csv cmdlet para forçar a exportação a gravar no arquivo. O Get-Content cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Exemplo 9: Usando o parâmetro Force com Append

Este exemplo mostra como usar os parâmetros Force e Append . Quando esses parâmetros são combinados, propriedades de objeto incompatíveis podem ser gravadas em um arquivo CSV.

$Content = [PSCustomObject]@{Name = 'PowerShell'; Version = '7.0'}
$Content | Export-Csv -Path .\ParmFile.csv -NoTypeInformation
$AdditionalContent = [PSCustomObject]@{Name = 'Windows PowerShell'; Edition = 'Desktop'}
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append

Export-Csv : Cannot append CSV content to the following file: ParmFile.csv.
The appended object does not have a property that corresponds to the following column:
Version. To continue with mismatched properties, add the -Force parameter, and then retry
 the command.
At line:1 char:22
+ $AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (Version:String) [Export-Csv], InvalidOperationException
+ FullyQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell. ...

$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append -Force
Import-Csv -Path .\ParmFile.csv

Name               Version
----               -------
PowerShell         7.0
Windows PowerShell

Uma expressão cria o PSCustomObject com as propriedades Name e Version. Os valores são armazenados na $Content variável. A $Content variável é enviada pelo pipeline para o Export-Csv cmdlet. Export-Csv usa o parâmetro Path e salva o ParmFile.csv arquivo no diretório atual. O parâmetro NoTypeInformation remove o cabeçalho de informações do #TYPE da saída CSV e não é necessário no PowerShell 6.

Outra expressão cria um PSCustomObject com as propriedades Name e Edition . Os valores são armazenados na $AdditionalContent variável. A $AdditionalContent variável é enviada pelo pipeline para o Export-Csv cmdlet. O parâmetro Append é usado para adicionar os dados ao arquivo. O acréscimo falha porque há uma incompatibilidade de nome de propriedade entre Version e Edition.

O Export-Csv cmdlet Force parâmetro é usado para forçar a exportação a gravar no arquivo. A propriedade Edition é descartada. O Import-Csv cmdlet usa o parâmetro Path para exibir o arquivo localizado no diretório atual.

Parâmetros

-Append

Use esse parâmetro para adicionar Export-CSV saída CSV ao final do arquivo especificado. Sem esse parâmetro, Export-CSV substitui o conteúdo do arquivo sem aviso.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Delimiter

Especifica um delimitador para separar os valores da propriedade. O padrão é uma vírgula (,). Insira um caractere, como dois pontos (:). Para especificar um ponto-e-vírgula (;), coloque-o entre aspas.

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Especifica a codificação do arquivo CSV exportado. O valor padrão é ASCII.

Os valores aceitáveis para esse parâmetro são os seguintes:

  • ASCII Usa o conjunto de caracteres ASCII (7 bits).
  • BigEndianUnicode Usa UTF-16 com a ordem de bytes big-endian.
  • Default Usa a codificação que corresponde à página de código ativo do sistema (geralmente ANSI).
  • OEM Usa a codificação que corresponde à página de código OEM atual do sistema.
  • Unicode Usa UTF-16 com a ordem de bytes little-endian.
  • UTF7 Usa UTF-7.
  • UTF8 Usa UTF-8.
  • UTF32 Usa UTF-32 com a ordem de bytes little-endian.
Type:String
Accepted values:ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32
Position:Named
Default value:ASCII
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Esse parâmetro permite Export-Csv substituir arquivos com o atributo Somente leitura.

Quando os parâmetros Force e Append são combinados, os objetos que contêm propriedades incompatíveis podem ser gravados em um arquivo CSV. Somente as propriedades correspondentes são gravadas no arquivo. As propriedades incompatíveis são descartadas.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Especifica os objetos a exportar como cadeias CSV. Insira uma variável que contém os objetos ou digite um comando ou uma expressão que obtém os objetos. Você também pode canalizar objetos para Export-CSVo .

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Especifica o caminho para o arquivo de saída CSV. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, use aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Type:String
Aliases:PSPath
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

Use esse parâmetro para que Export-CSV não substitua um arquivo existente. Por padrão, se o arquivo existir no caminho especificado, Export-CSV substituirá o arquivo sem aviso.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoTypeInformation

Remove o #TYPE cabeçalho de informações 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.

Type:SwitchParameter
Aliases:NTI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Um parâmetro obrigatório que especifica o local para salvar o arquivo de saída CSV.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCulture

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Impede que o cmdlet seja processado ou faça alterações. A saída mostra o que aconteceria se o cmdlet fosse executado.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

PSObject

Você pode canalizar qualquer objeto com um adaptador ETS (Extended Type System) para esse cmdlet.

Saídas

None

Esse cmdlet não retorna nenhuma saída.

Observações

O Windows PowerShell inclui os seguintes aliases para Export-Csv:

  • epcsv

O Export-CSV cmdlet converte os objetos enviados em uma série de cadeias de caracteres CSV e os salva no arquivo de texto especificado. Você pode usar Export-CSV para salvar objetos em um arquivo CSV e, em seguida, usar o Import-Csv cmdlet para criar objetos a partir do arquivo CSV.

No arquivo CSV, cada objeto é representado por uma lista separada por caracteres dos valores de propriedade do objeto. Os valores de propriedade são convertidos em cadeias de caracteres usando o método ToString(). As cadeias de caracteres são representadas pelo nome do valor da propriedade. 'Export-CSV não exporta os métodos do objeto.

As cadeias de caracteres CSV são saídas da seguinte maneira:

  • Por padrão, a primeira cadeia de caracteres contém o cabeçalho de informações #TYPE seguido pelo nome totalmente qualificado do tipo de objeto. Por exemplo, #TYPE System.Diagnostics.Process.
  • Se NoTypeInformation 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.

Quando você envia vários objetos para Export-CSVo , Export-CSV organiza o arquivo com base nas propriedades do primeiro objeto enviado. Se os objetos restantes não tiverem uma das propriedades especificadas, o valor da propriedade desse primeiro objeto será nulo, condição esta representada por duas vírgulas consecutivas. Se os objetos restantes têm propriedades adicionais, os valores de propriedade não são incluídos no arquivo.

Você pode usar o Import-Csv cmdlet para recriar objetos a partir das cadeias de caracteres CSV nos arquivos. Os objetos resultantes são versões em CSV dos objetos originais, que consistem em representações dos valores das propriedades em cadeia, sem métodos.

Os ConvertTo-Csv cmdlets e ConvertFrom-Csv convertem objetos em cadeias de caracteres CSV e em cadeias de caracteres CSV. Export-CSV é o mesmo ConvertTo-CSVque , exceto que ele salva as cadeias de caracteres CSV em um arquivo.