Se precisar enviar informações do PowerShell para um arquivo CSV, o cmdlet Export-CSV está aqui para ajudar. Este cmdlet economiza muito tempo para os administradores ao lidar com texto solto e convertê-lo em um formato estruturado. Em vez de mexer com o Excel, podemos usar o PowerShell para criar arquivos CSV.
Você pode criar arquivos CSV para alimentar relatórios, enviar para bancos de dados e muito mais a partir de qualquer objeto do PowerShell com o cmdlet Export-Csv.
O formato CSV é simplesmente uma lista de linhas separadas por vírgulas armazenadas como um arquivo de texto. Como é apenas um arquivo de texto, teoricamente podemos usar um comando genérico de arquivo de texto como Set-Content
para fazer o trabalho. No entanto, usar um comando genérico exigiria a construção da estrutura CSV necessária. Por que fazer isso quando já temos um comando de exportação CSV em Export-Csv
para enviar a saída CSV para um arquivo?
Arquivos CSV precisam de uma estrutura específica. A capacidade deste cmdlet de entender, ler e transformar informações em arquivos CSV é o que torna este cmdlet do PowerShell tão útil.
Gerencie e Relate o Active Directory, Exchange e o Microsoft 365 com o ManageEngine ADManager Plus. Baixe a avaliação gratuita!
Objetos -eq Linhas CSV
O cmdlet Export-Csv
tem um único propósito; salvar objetos do PowerShell em um arquivo CSV.
Vamos dizer que você tenha um objeto com duas propriedades chamadas foo
e bar
. Cada uma dessas propriedades tem valores respectivos de 1
e 2
. Quando você envia esse objeto para Export-Csv
, ele criará um arquivo CSV com duas colunas e uma única linha. Você pode então importar o conteúdo do CSV e inspecionar como ele se parece.
O PowerShell trata essencialmente um objeto na memória e um arquivo CSV da mesma forma! Ele também diz que os rótulos das colunas devem ser cabeçalhos. Exportar objetos usando este cmdlet é como salvar o objeto no sistema de arquivos. Usando o comando de texto genérico PowerShell Get-Content
, podemos inspecionar o texto bruto para ver o que o comando Export-Csv
exportou.
Observe que o comando usa aspas duplas em torno de cada entrada de linha. Isso permite incluir campos com espaços também.
Parâmetros Úteis do Export-CSV
No Windows PowerShell 5.1, o cmdlet Export-CSV exibe o tipo de objeto que criou o arquivo CSV. Se preferir não ver esta linha, um parâmetro popular é NoTypeInformation
, que elimina completamente esta linha.
Se trabalha com muitos arquivos CSV ou fontes de dados diferentes, pode aprender da maneira difícil que Export-CSV sobrescreve arquivos existentes. Sem problema se estiver usando o parâmetro Append
. O parâmetro Append
permite adicionar linhas ao CSV em vez de sobrescrever um arquivo existente.
Outro parâmetro útil é o Delimiter
. Ocasionalmente, pode precisar criar um arquivo CSV que não utilize o separador de lista usual (vírgula) para separar os campos. Talvez precise criar um arquivo com muitos dados que usam tabulações como separadores ou até mesmo ponto e vírgulas. O cmdlet PowerShell Export-Csv
pode nos ajudar com isso ao especificar o delimitador que precisamos.
Lidando com Aspas
Ao criar linhas CSV, Export-Csv
coloca todos os campos entre aspas. Em algumas situações, isso pode não ser desejável. Infelizmente, não há maneira de evitar isso. Mas, usando um pouco mais de código, é possível fazer acontecer.
Abaixo você pode ver um exemplo de criação do arquivo CSV. Então, Get-Content
lê o arquivo de texto bruto, substitui todas as aspas duplas na memória por nada. Em seguida, Set-Content
escreve essas informações da memória de volta para o disco.
Gerencie e Relate o Active Directory, Exchange e Microsoft 365 com o ManageEngine ADManager Plus. Baixe o Teste Grátis!
Resumo
O cmdlet Export-Csv
é uma ferramenta simples, mas extremamente útil para gerenciar dados CSV. Ele pode entender a estrutura de um arquivo de dados CSV e transformar objetos PowerShell em linhas CSV.
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
Este comando é mais um ótimo motivo para começar a escrever código PowerShell hoje!