Import-Csv
Cria objetos personalizados semelhantes a tabelas a partir dos itens em um arquivo CSV (valores separados por vírgula).
Sintaxe
Delimiter (Default)
Import-Csv
[[-Path] <string[]>]
[[-Delimiter] <char>]
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<CommonParameters>]
UseCulture
Import-Csv
[[-Path] <string[]>]
-UseCulture
[-LiteralPath <string[]>]
[-Header <string[]>]
[-Encoding <string>]
[<CommonParameters>]
Description
O cmdlet Import-Csv cria objetos personalizados semelhantes à tabela dos itens em arquivos CSV. Cada coluna no arquivo CSV torna-se uma propriedade do objeto personalizado e os itens em linhas tornam-se 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 da coluna e o delimitador de item ou direcionar Import-Csv para usar o separador de lista para a cultura atual como delimitador de item.
Você também pode usar os cmdlets ConvertTo-Csv e ConvertFrom-Csv para converter objetos em cadeias de caracteres CSV (e voltar). Esses cmdlets são os mesmos que os Export-CSV cmdlets e Import-Csv , exceto que eles não lidam com arquivos.
Se uma entrada de linha de cabeçalho em um arquivo CSV contiver um valor vazio ou nulo, o PowerShell inserirá um nome de linha de cabeçalho padrão e exibirá uma mensagem de aviso.
Import-Csv usa o BOM (byte-order-mark) para detectar o formato de codificação do arquivo. Se o arquivo não tiver BOM, ele pressupõe que a codificação seja UTF8.
Exemplos
Exemplo 1: Importar objetos de processo
Este exemplo mostra como exportar e 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 parâmetro Delimitador 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 Delimitador é 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 parâmetro Header 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 executa 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 Core.
A variável $Header contém um cabeçalho personalizado que substitui os seguintes valores padrão: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime e 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 cabeçalho para aplicar a variável $Header. A variável $J contém a PSCustomObject importada 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 were not 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
(Import-Csv -Path .\Projects.csv).H1
WARNING: One or more headers were not specified. Default names starting with "H" have been used in place of any missing headers.
Redmond
FarEast
Europe
Para criar seu arquivo Projects.csv, use os valores mostrados na saída do Get-Content exemplo.
O Get-Content cmdlet exibe o arquivo Projects.csv. A linha de cabeçalho não tem um valor entre ProjectName e Completed. O Import-Csv cmdlet importa o arquivo Projects.csv e exibe uma mensagem de aviso porque H1 é um nome de cabeçalho padrão. O (Import-Csv -Path .\Projects.csv).H1 comando obtém os valores da propriedade H1 e exibe um aviso.
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.
Se você especificar um caractere diferente do delimitador de cadeia de caracteres real no arquivo, Import-Csv não será possível criar os objetos a partir das cadeias de caracteres CSV e retornará as cadeias de caracteres CSV.
Propriedades do parâmetro
| Tipo: | Char |
| Valor padrão: | comma (,) |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
Delimiter
| Cargo: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Encoding
Especifica o tipo de codificação para o arquivo de destino. O valor padrão é Default.
Os valores aceitáveis para esse parâmetro são os seguintes:
- ascii usa conjunto de caracteres ASCII (7 bits).
- BigEndianUnicode usa UTF-16 com a ordem de bytes big-endian.
- padrão 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 byte little-endian.
- UTF7 usa UTF-7.
- UTF8 usa UTF-8.
- UTF32 usa UTF-32 com a ordem de bytes little-endian.
Propriedades do parâmetro
| Tipo: | Encoding |
| Valor padrão: | Default |
| Valores aceitos: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 os cabeçalhos das colunas como uma lista separada por vírgulas. Não coloque a cadeia de caracteres de 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 criará um objeto extra com base nos itens na linha de cabeçalho.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-LiteralPath
Especifica o caminho para o arquivo CSV a ser importado. Ao contrário do caminho , o valor do parâmetro LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell que não deve interpretar nenhum caractere como uma sequência de escape.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | PSPath |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | True |
| Valor dos argumentos restantes: | False |
-Path
Especifica o caminho para o arquivo CSV a ser importado.
Você também pode redirecionar um caminho para Import-Csv.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
UseCulture
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 canalizar uma cadeia de caracteres que contém um caminho para Import-Csv.
Saídas
Object
Esse cmdlet retorna os objetos descritos pelo conteúdo no arquivo CSV.
Observações
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 do 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, para que você possa 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 de propriedade.
A linha de cabeçalho de coluna determina o número de colunas e os nomes das colunas. Os nomes de coluna também são os nomes das propriedades dos objetos. A primeira linha é interpretada como cabeçalhos de coluna, a menos que você use o parâmetro Cabeçalho 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 de cabeçalho da coluna estiver sem um valor ou contiver um valor nulo ou vazio, Import-Csv usará H seguido por um número para o cabeçalho de coluna ausente e o nome da propriedade.
No arquivo CSV, cada objeto é representado por uma lista separada por vírgulas dos valores de propriedade do objeto. Os valores de propriedade são convertidos em strings usando o método ToString() do objeto, portanto, são representados pelo nome do valor da propriedade.
Export-Csv não exporta os métodos do objeto.