Se você precisa enviar informações do PowerShell para um arquivo CSV, o cmdlet Export-CSV está aqui para ajudar. Este cmdlet economiza muito tempo dos administradores organizando textos soltos 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 mais a partir de qualquer objeto PowerShell com o cmdlet Export-Csv
.
O formato CSV é apenas uma lista separada por vírgulas de linhas armazenadas como um arquivo de texto. Já que é apenas um arquivo de texto, nós poderíamos tecnicamente apenas usar um comando de arquivo de texto genérico como Set-Content
para fazer o trabalho. Porém, usar um comando genérico exigiria construir a estrutura CSV necessária por nós mesmos. Por que fazer isso quando temos um comando de exportação CSV já 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 para arquivos CSV é o que torna este cmdlet do PowerShell tão útil.
Gerencie e Relate o Active Directory, Exchange e Microsoft 365 com ManageEngine ADManager Plus. Baixe a Versão de 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 o Export-Csv
, ele criará um arquivo CSV com duas colunas e uma única linha. Você então pode importar o conteúdo do CSV e inspecionar como ele se parece.
O PowerShell basicamente trata um objeto em memória e um arquivo CSV da mesma maneira! Ele também entende que os rótulos das colunas devem ser cabeçalhos. Exportar objetos usando esse cmdlet é como salvar o objeto no sistema de arquivos. Usando o comando de texto genérico do PowerShell Get-Content
, podemos inspecionar o texto bruto para ver o que o comando Export-Csv
exportou.
Observe que o comando usa as aspas duplas ao redor 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 exporta o tipo de objeto que criou o arquivo CSV. Se você preferir não ver esta linha, um parâmetro popular é NoTypeInformation
, que elimina completamente esta linha.
Se você trabalha com vários arquivos CSV diferentes ou fontes de dados, pode aprender da maneira difícil que o Export-CSV sobrescreve arquivos existentes. Mas não há 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, você pode precisar criar um arquivo CSV que não use o separador de lista usual (vírgula) para separar os campos. Em vez disso, talvez precise criar um arquivo com muitos dados que use abas como separadores ou talvez até mesmo ponto e vírgulas. O cmdlet PowerShell Export-Csv
também pode nos ajudar com isso, especificando o delimitador que precisamos.
Lidando com aspas
Ao criar linhas CSV, o Export-Csv
coloca todos os campos entre aspas. Em algumas situações, isso pode não ser desejável. Infelizmente, não há como 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. Em seguida, Get-Content
lê o arquivo de texto bruto, substitui todas as aspas duplas na memória por nada. Então Set-Content
escreve essas informações na memória de volta no disco.
Gerencie e Relate o Active Directory, Exchange e o Microsoft 365 com o ManageEngine ADManager Plus. Baixe a Avaliação Gratuita!
Resumo
O cmdlet Export-Csv
é uma ferramenta simples, porém extremamente útil, para gerenciar dados em formato 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!