Import-CSV
Converte propriedades de objeto de um arquivo de valores separados por vírgula (CSV) em versões CSV dos objetos originais.
Sintaxe
Import-CSV [[-Delimitador] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Descrição
O cmdlet Import-CSV cria objetos de arquivos CSV de tamanho variável gerados pelo cmdlet Export-CSV.
É possível usar os parâmetros do cmdlet Import-CSV para especificar a linha do cabeçalho da coluna, que determina os nomes de propriedade dos objetos resultantes; para especificar o delimitador de itens; ou para direcionar Import-CSV para usar o separador de lista da cultura atual como o delimitador de itens.
Os objetos que Import-CSV cria são versões CSV dos objetos originais. Os valores das propriedades dos objetos CSV são versões de cadeia de caracteres dos valores das propriedades dos objetos originais. As versões CSV dos objetos não têm nenhum método.
Também é possível usar os cmdlets ConvertTo-CSV e ConvertFrom-CSV para converter objetos em cadeias de caracteres CSV (e vice-versa). Esses cmdlets são iguais aos cmdlets Export-CSV e Import-CSV, exceto que eles não salvam as cadeias de caracteres CSV em um arquivo.
Parâmetros
-Delimitador <char>
Especifica o delimitador que separa os valores de propriedade no arquivo CSV. O padrão é uma vírgula (,). Digite um caractere, como dois pontos (:). Para especificar um ponto-e-vírgula (;), coloque-o entre aspas.
Se você especificar um caractere diferente do delimitador de cadeia de caracteres real no arquivo, Import-CSV não poderá criar objetos a partir das cadeias de caracteres CSV. Em vez disso, ele retornará as cadeias de caracteres.
Necessário? |
false |
Posição? |
2 |
Valor padrão |
, |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Header <string[]>
Especifica uma linha de cabeçalho de coluna alternativa para o arquivo importado. O cabeçalho da coluna determina os nomes das propriedades do objeto criados pelo Import-CSV cria.
Digite uma lista de cabeçalhos de coluna separados por vírgula. Coloque cada item entre aspas (simples ou duplas). Não coloque a cadeia de caracteres do cabeçalho entre aspas. Se você inserir menos cabeçalhos de coluna do que o número de colunas, as colunas restantes não terão um cabeçalho. Se você inserir mais cabeçalhos do que o número de colunas, os cabeçalhos extras serão ignorados.
Ao usar o parâmetro Header, exclua a linha de cabeçalho original do arquivo CSV. Caso contrário, Import-CSV criará um objeto adicional a partir dos itens da linha de cabeçalho.
Necessário? |
false |
Posição? |
named |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Path <string[]>
Especifica o caminho para o arquivo CSV a ser importado. Também é possível canalizar um caminho para Import-CSV.
Necessário? |
true |
Posição? |
1 |
Valor padrão |
Nenhum |
Aceitar entrada do pipeline? |
true (ByValue, ByPropertyName) |
Aceitar caracteres curinga? |
false |
-UseCulture
Use o separador de lista da cultura atual como o delimitador de itens. O padrão é uma vírgula (,).
Para localizar o separador de lista de uma cultura, use o comando a seguir: (Get-Culture).TextInfo.ListSeparator. Se você especificar um caractere diferente do delimitador usado nas cadeias de caracteres CSV, ConvertFrom-CSV não poderá criar objetos a partir das cadeias de caracteres CSV. Em vez disso, ele retornará as cadeias de caracteres.
Necessário? |
true |
Posição? |
named |
Valor padrão |
Vírgula |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
<CommonParameters>
Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.
Entradas e saídas
O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.
Entradas |
System.String Você pode canalizar uma cadeia de caracteres que contém um caminho para Import-CSV. |
Saídas |
Object. Import-CSV retorna os objetos descritos pelo conteúdo no arquivo CSV. |
Observações
Como os objetos importados são versões CSV do tipo do objeto, eles não são reconhecidos e formatados pelas entradas de formatação de tipo do Windows PowerShell que formatam as versões não-CSV do tipo de objeto.
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 cadeias de caracteres (usando o método ToString() do objeto), de forma que eles geralmente são representados pelo nome do valor da propriedade. O Export-CSV não exporta os métodos do objeto.
Exemplo 1
C:\PS>get-process | export-csv processes.csv
C:\PS> $p = import-CSV processes.csv
C:\PS> $p | get-member
TypeName: CSV:System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
ToString Method System.String ToString()
BasePriority NoteProperty System.String BasePriority=8
Company NoteProperty System.String Company=Microsoft Corporation
...
C:\PS> $p | out-gridview
Descrição
-----------
Esse exemplo mostra como exportar e importar um arquivo CSV de objetos do Microsoft .NET Framework.
O primeiro comando usa o cmdlet Get-Process para obter o processo no computador local. Usa um operador de pipeline (|) para enviar os objetos de processo ao cmdlet Export-CSV, o que exporta os objetos de processo para o arquivo Processes.csv do diretório atual.
O segundo comando usa o cmdlet Import-CSV para importar os processos do arquivo Import-CSV. Ele salva os objetos de processo resultantes na variável $p.
O terceiro comando usa um operador de pipeline para enviar os objetos importados para os cmdlets Get-Member. O resultado mostra que eles são objetos CSV:System.Diagnostic.Process, não os objetos System.Diagnostic.Process que Get-Process retorna.
Além disso, como não há nenhum tipo de entrada nos arquivos de formatação para a versão CSV dos objetos de processos, estes objetos não são formatados da mesma forma que são formatados objetos de processos padrão.
Para exibir os objetos, use os cmdlets de formatação, como Format-Table e Format-List ou envie os objetos para Out-GridView.
Exemplo 2
C:\PS>get-process | export-csv processes.csv -Delimiter :
C:\PS> $p = import-csv processes.csv -Delimiter :
Descrição
-----------
Este exemplo mostra como usar o parâmetro Delimiter de Import-CSV. Neste exemplo, os processos são exportados para um arquivo que usa dois-pontos (:) como delimitador.
Ao importar, o arquivo Import-CSV usa o parâmetro Delimiter para indicar o delimitador que é usado no arquivo.
Exemplo 3
C:\PS>$p = import-csv processes.csv -UseCulture
C:\PS> (get-culture).textinfo.listseparator
,
Descrição
-----------
Esse exemplo mostra como usar o parâmetro UseCulture de Import-CSV.
O primeiro comando importa os objetos do arquivo Processes.csv para a variável $p. Ele usa o parâmetro UseCulture para direcionar Import-CSV para usar o separador de lista definido para a cultura atual.
O segundo comando exibe o separador de lista da cultura atual. Ele usa o cmdlet Get-Culture para obter a cultura atual. Ele usa o método de ponto (.) para obter a propriedade TextInfo da cultura atual e a propriedade ListSeparator do objeto em TextInfo. Neste exemplo, o comando retorna uma vírgula.
Exemplo 4
C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv
C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"
# Delete header from file
C:\PS> $a = (get-content jobs.csv)
C:\PS> $a = $a[0], $a[2..($a.count - 1)]
C:\PS> $a > jobs.csv
C:\PS> $j = import-csv jobs.csv -header $header
C:\PS> $j
MoreData : True
StatusMessage :
Location : localhost
Command : get-process
State : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 135bdd25-40d6-4a20-bd68-05282a59abd6
SessionId : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
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.String]
Debug : System.Management.Automation.PSDataCollection`1[System.String]
Warning : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged :
Descrição
-----------
Esse exemplo mostra como usar o parâmetro Header de Import-CSV para alterar os nomes de propriedades no objeto importado resultante.
O primeiro comando usa o cmdlet Start-Job para iniciar um trabalho em segundo plano que executa um comando Get-Process no computador local. Um operador de pipeline (|) envia o objeto de trabalho resultante para o cmdlet Export-CSV que converte o objeto de trabalho no formato CSV. Um operador de atribuição (=) salva o CSV resultante no arquivo Jobs.csv.
O segundo comando salva um cabeçalho na variável $header. Ao contrário do cabeçalho padrão, esse cabeçalho usa "MoreData" em vez de "HasMoreData" e "State" em vez de "JobStateInfo".
Os próximos três comandos excluem o cabeçalho original (a segunda linha) do arquivo Jobs.csv.
O sexto comando usa o cmdlet Import-CSV para importar o arquivo Jobs.csv e converter as cadeias de caracteres CSV em uma versão CSV do objeto de trabalho. O comando usa o parâmetro Header para enviar o cabeçalho alternativo. Os resultados são armazenados na variável $j.
O sétimo comando exibe o objeto na variável $j. O objeto resultante tem as propriedades "MoreData" e "State", conforme mostrado no resultado do comando.
Exemplo 5
C:\PS>".\processes.csv" | import-csv
Descrição
-----------
Este comando importa os objetos do arquivo Processes.csv.