Partilhar via


Import-Csv

Cria objetos personalizados semelhantes a tabelas a partir dos itens em um arquivo CSV (valor separado por caracteres).

Sintaxe

DelimiterPath (Predefinição)

Import-Csv
    [[-Delimiter] <Char>]
    [-Path] <String[]>
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]

DelimiterLiteralPath

Import-Csv
    [[-Delimiter] <Char>]
    -LiteralPath <String[]>
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]

CulturePath

Import-Csv
    [-Path] <String[]>
    -UseCulture
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]

CultureLiteralPath

Import-Csv
    -LiteralPath <String[]>
    -UseCulture
    [-Header <String[]>]
    [-Encoding <Encoding>]
    [<CommonParameters>]

Description

O cmdlet Import-Csv cria objetos personalizados semelhantes a tabelas a partir dos itens em arquivos CSV. Cada coluna no arquivo CSV se torna uma propriedade do objeto personalizado e os itens em linhas se tornam os valores de propriedade. Import-Csv funciona em qualquer arquivo CSV, incluindo arquivos gerados pelo cmdlet Export-Csv.

Você pode usar os parâmetros do cmdlet Import-Csv para especificar a linha de cabeçalho de coluna e o delimitador de item ou direcionar Import-Csv para usar o separador de lista para a cultura atual como o delimitador de item.

Você também pode usar os cmdlets ConvertTo-Csv e ConvertFrom-Csv para converter objetos em cadeias de caracteres CSV (e vice-versa). Esses cmdlets são os mesmos que os cmdlets Export-Csv e Import-Csv, exceto que eles trabalham com dados do pipeline em vez de arquivos.

Se uma entrada de linha de cabeçalho em um arquivo CSV contiver um valor vazio ou nulo, o PowerShell insere um nome de linha de cabeçalho padrão e exibe uma mensagem de aviso.

A partir do PowerShell 6.0, Import-Csv agora oferece suporte ao W3C Extended Log File Format.

Exemplos

Exemplo 1: Importar objetos de processo

Este exemplo mostra como exportar e, em seguida, importar um arquivo CSV de objetos de processo.

Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | Get-Member
   TypeName: System.Management.Automation.PSCustomObject

Name                       MemberType   Definition
----                       ----------   ----------
Equals                     Method       bool Equals(System.Object obj)
GetHashCode                Method       int GetHashCode()
GetType                    Method       type GetType()
ToString                   Method       string ToString()
BasePriority               NoteProperty string BasePriority=8
Company                    NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name                   SI Handles VM            WS        PM        NPM    Path
----                   -- ------- --            --        --        ---    ----
ApplicationFrameHost   4  407     2199293489152 15884288  15151104  23792  C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit                0  157     2199112204288 4591616   1630208   10376
winlogon               4  233     2199125549056 7659520   2826240   10992  C:\WINDOWS\System32\WinLogon.exe
WinStore.App           4  846     873435136     33652736  26607616  55432  C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE               0  201     2199100219392 8830976   3297280   10632  C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE               0  407     2199157727232 18509824  12922880  16624  C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost               0  834     2199310204928 51945472  87441408  24984  C:\Windows\System32\WUDFHost.exe

O cmdlet Get-Process envia objetos de processo pelo pipeline para o Export-Csv. O cmdlet Export-Csv converte os objetos de processo em cadeias de caracteres CSV e salva as cadeias de caracteres no arquivo Processes.csv. O cmdlet Import-Csv importa as cadeias de caracteres CSV do arquivo Processes.csv. As cadeias de caracteres são salvas na variável $P. A variável $P é enviada pelo pipeline para o cmdlet Get-Member que exibe as propriedades das cadeias de caracteres CSV importadas. A variável $P é enviada pelo pipeline para o cmdlet Format-Table e exibe os objetos.

Exemplo 2: Especificar o delimitador

Este exemplo mostra como usar o Delimitador parâmetro do cmdlet Import-Csv.

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table

O cmdlet Get-Process envia objetos de processo pelo pipeline para Export-Csv. O cmdlet Export-Csv converte os objetos de processo em cadeias de caracteres CSV e salva as cadeias de caracteres no arquivo Processes.csv. O parâmetro Delimiter é usado para especificar um delimitador de dois pontos. O cmdlet Import-Csv importa as cadeias de caracteres CSV do arquivo Processes.csv. As cadeias de caracteres são salvas na variável $P. Para $P variável é enviada pelo pipeline para o cmdlet Format-Table.

Exemplo 3: Especificar a cultura atual para o delimitador

Este exemplo mostra como usar o cmdlet Import-Csv com o parâmetro UseCulture.

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

O cmdlet Get-Culture usa as propriedades aninhadas TextInfo e ListSeparator para obter o separador de lista padrão da cultura atual. O cmdlet Get-Process envia objetos de processo pelo pipeline para Export-Csv. O cmdlet Export-Csv converte os objetos de processo em cadeias de caracteres CSV e salva as cadeias de caracteres no arquivo Processes.csv. O parâmetro UseCulture usa o separador de lista padrão da cultura atual. O cmdlet Import-Csv importa as cadeias de caracteres CSV do arquivo Processes.csv.

Exemplo 4: Alterar nomes de propriedade em um objeto importado

Este exemplo mostra como usar o Header parâmetro de Import-Csv para alterar os nomes das propriedades no objeto importado resultante.

Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
          'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
          'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State         : Running
MoreData      : True
StatusMessage :
Location      : localhost
Command       : Get-Process
StateInfo     : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : a259eb63-6824-4b97-a033-305108ae1c2e
Id            : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime     : 12/20/2018 18:59:57
EndTime       :
JobType       : BackgroundJob
Output        : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress      : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information   : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]

O cmdlet Start-Job inicia um trabalho em segundo plano que é executado Get-Process. Um objeto de trabalho é enviado pelo pipeline para o cmdlet Export-Csv e convertido em uma cadeia de caracteres CSV. O parâmetro NoTypeInformation remove o cabeçalho de informações de tipo da saída CSV e é opcional no PowerShell v6 e superior. A variável $Header contém um cabeçalho personalizado que substitui os seguintes valores padrão: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimee PSJobTypeName. A variável $A usa o cmdlet Get-Content para obter a cadeia de caracteres CSV do arquivo Jobs.csv. A variável $A é usada para remover o cabeçalho padrão do arquivo. O cmdlet Out-File salva a nova versão do arquivo Jobs.csv na variável $A. O cmdlet Import-Csv importa o arquivo Jobs.csv e usa o parâmetro Header para aplicar a variável $Header. A variável $J contém o PSCustomObject importado e exibe o objeto no console do PowerShell.

Exemplo 5: Criar um objeto personalizado usando um arquivo CSV

Este exemplo mostra como criar um objeto personalizado no PowerShell usando um arquivo CSV.

Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | Get-Member
   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
LinkID      NoteProperty string LinkID=113207
TopicTitle  NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases

Para criar seu arquivo Links.csv, use os valores mostrados na saída Get-Content.

O cmdlet Get-Content exibe o arquivo Links.csv. O cmdlet Import-Csv importa o arquivo Links.csv. O parâmetro Header especifica os nomes de propriedade LinkId e TopicTitle. Os objetos são armazenados na variável $A. O cmdlet Get-Member mostra os nomes de propriedade do parâmetro Header. O cmdlet Where-Object seleciona objetos com a propriedade TopicTitle que inclui alias.

Exemplo 6: Importar um CSV sem um valor

Este exemplo mostra como o cmdlet Import-Csv no PowerShell responde quando a linha de cabeçalho em um arquivo CSV inclui um valor nulo ou vazio. Import-Csv substitui um nome padrão para a linha de cabeçalho ausente que se torna o nome da propriedade do objeto que Import-Csv retorna.

Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers weren't specified. Default names starting with "H" have been used in
place of any missing headers.

ProjectID ProjectName H1      Completed
--------- ----------- --      ---------
13        Inventory   Redmond True
440                   FarEast True
469       Marketing   Europe  False

O cmdlet Get-Content exibe o arquivo Projects.csv. A linha de cabeçalho está faltando um valor entre ProjectName e Completed. O cmdlet Import-Csv importa o arquivo Projects.csv e exibe uma mensagem de aviso porque H1 é um nome de cabeçalho padrão.

Parâmetros

-Delimiter

Especifica o delimitador que separa os valores de propriedade no arquivo 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. Para especificar caracteres especiais com escape, como tab (`t), coloque-o entre aspas duplas.

Se você especificar um caractere diferente do delimitador de cadeia de caracteres real no arquivo, Import-Csv não poderá criar os objetos a partir das cadeias de caracteres CSV e retornará as cadeias de caracteres CSV completas.

Propriedades dos parâmetros

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

Conjuntos de parâmetros

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

-Encoding

Especifica a codificação para o arquivo CSV importado. O valor predefinido é utf8NoBOM.

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

  • ascii: Usa a codificação para o conjunto de caracteres ASCII (7 bits).
  • ansi: Usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada no PowerShell 7.4.
  • bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian.
  • bigendianutf32: Codifica no formato UTF-32 utilizando a ordem de bytes big-endian.
  • oem: Utiliza a codificação predefinida para MS-DOS e programas de consola.
  • unicode: Codifica em formato UTF-16 utilizando a ordem de bytes little-endian.
  • utf7: Codifica em formato UTF-7.
  • utf8: Codifica em formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Byte Order Mark (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Byte Order Mark (BOM)
  • utf32: Codifica no formato UTF-32.

A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricos de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.

A partir do PowerShell 7.4, você pode usar o valor Ansi para o parâmetro Encoding para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.

Observação

UTF-7* não é mais recomendado para usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Encoding.

Propriedades dos parâmetros

Tipo:Encoding
Default value:UTF8NoBOM
Valores aceites:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Suporta carateres universais:False
NãoMostrar:False

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

-Header

Especifica uma linha de cabeçalho de coluna alternativa para o arquivo importado. O cabeçalho da coluna determina os nomes de propriedade dos objetos criados por Import-Csv.

Insira cabeçalhos de coluna como uma lista separada por caracteres. Não coloque a cadeia de caracteres do cabeçalho entre aspas. Coloque cada cabeçalho de coluna entre aspas simples.

Se você inserir menos cabeçalhos de coluna do que colunas de dados, as colunas de dados restantes serão descartadas. Se você inserir mais cabeçalhos de coluna do que colunas de dados, os cabeçalhos de coluna adicionais serão criados com colunas de dados vazias.

Ao usar o parâmetro Header, exclua a linha de cabeçalho original do arquivo CSV. Caso contrário, Import-Csv cria um objeto extra a partir dos itens na linha de cabeçalho.

Propriedades dos parâmetros

Tipo:

String[]

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

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

-LiteralPath

Especifica o caminho para o arquivo CSV a ser importado. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como foi escrito. Nenhum caractere é interpretado como carta curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:PSPath, LP

Conjuntos de parâmetros

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

-Path

Especifica o caminho para o arquivo CSV a ser importado. Você também pode canalizar um caminho para Import-Csv.

Propriedades dos parâmetros

Tipo:

String[]

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

Conjuntos de parâmetros

DelimiterPath
Position:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
CulturePath
Position:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:True
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

CulturePath
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
CultureLiteralPath
Position:Named
Obrigatório:True
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

String

Você pode encaminhar uma cadeia de caracteres que contenha um caminho para este cmdlet.

Saídas

Object

Este cmdlet retorna os objetos descritos pelo conteúdo no arquivo CSV.

Notas

O PowerShell inclui os seguintes aliases para Import-Csv:

  • Todas as plataformas:
    • ipcsv

Como os objetos importados são versões CSV do tipo de objeto, eles não são reconhecidos e formatados pelas entradas de formatação de tipo PowerShell que formatam as versões não CSV do tipo de objeto.

O resultado de um comando Import-Csv é uma coleção de cadeias de caracteres que formam um objeto personalizado semelhante a uma tabela. Cada linha é uma cadeia de caracteres separada, portanto, você pode usar a propriedade Count do objeto para contar as linhas da tabela. As colunas são as propriedades do objeto e os itens nas linhas são os valores das propriedades.

A linha do cabeçalho da coluna determina o número de colunas e os nomes das colunas. Os nomes das colunas também são os nomes das propriedades dos objetos. A primeira linha é interpretada como sendo os cabeçalhos de coluna, a menos que você use o parâmetro Header para especificar cabeçalhos de coluna. Se qualquer linha tiver mais valores do que a linha de cabeçalho, os valores adicionais serão ignorados.

Se a linha do cabeçalho da coluna estiver faltando um valor ou contiver um valor nulo ou vazio, Import-Csv usará H seguido por um número para o cabeçalho da coluna ausente e o nome da propriedade.

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() do objeto, para que sejam representados pelo nome do valor da propriedade. Export-Csv não exporta os métodos do objeto.

Import-Csv também suporta o formato W3C Extended Log. As linhas que começam com o caractere de hash (#) são tratadas como comentários e ignoradas, a menos que o comentário comece com #Fields: e contenha uma lista delimitada de nomes de colunas. Nesse caso, o cmdlet usa esses nomes de coluna. Este é o formato padrão para o Windows IIS e outros logs do servidor Web. Para obter mais informações, consulte Extended Log File Format.