O termo CSV também possui outros significados, por exemplo, "valores separados por personagens", "arquivos delimitados por vírgula" etc.
Neste guia, demonstraremos como exportar dados no CSV em PowerShell.
A estrutura do arquivo CSV
O formato CSV segue uma estrutura muito simples. Qualquer arquivo CSV terá “.CSV ”como a extensão do arquivo. Aqui, eu gerei um amostra de arquivo CSV contendo
$ gat amostra.CSV
Como podemos ver, cada linha contém vários valores separados por vírgulas. Não há limite para quantas entradas um arquivo CSV pode conter.
A simplicidade da estrutura é o principal recurso. O formato CSV é projetado para que possa ser facilmente usado para exportar dados para outros programas. O resultado também é legível por humanos e pode ser visualizado usando qualquer editor de texto. Aplicativos de escritório como MS Excel, Calc, etc., também suporta CSV por padrão.
Exportando para CSV de PowerShell
PowerShell é uma concha poderosa e uma linguagem de script. Ele suporta inúmeros recursos básicos e avançados, incluindo a exportação de vários dados para o formato CSV.
Semelhante a qualquer outro shell, PowerShell tem seu próprio conjunto de comandos, chamados cmdlets. Para exportar para o CSV, PowerShell vem com um cmdlet dedicado Exportar-CSV. É necessário um objeto como entrada e exporta -o para um arquivo CSV.
Devido à estrutura simples, também pode ser alcançado usando o Conteúdo definido cmdlet. No entanto, exige que você definindo manualmente a estrutura do CSV. Usando Exportar-CSV reduz significativamente a carga de trabalho.
A página de ajuda do Export-CSV mostrará todos os comandos suportados.
$ Help Export-CSV
Um exemplo prático seria exportar a lista de processos em execução. Pode ser útil em determinados cenários de depuração/monitoramento. Para obter a lista de processos, usaremos o cmdlet Get-Process.
$ Get-Process
Agora, pague a saída para Exportar-CSV.
$ Get-Process | Exportar -CSV -Path/Home/Viktor/Desktop/Processos.CSV
Aqui, a bandeira "-Path" descreve o local para salvar o arquivo CSV gerado. Para verificar o conteúdo do arquivo CSV, use o cmdlet Obter conteudo.
$ Get-content/home/viktor/desktop/processos.CSV
Delimitador personalizado
Para qualquer arquivo CSV, é padrão usar vírgula (,) como o delimitador. No entanto, você pode querer mudar o delimitador para algo diferente de uma vírgula em determinadas situações. O cmdlet export-csv suporta definir um delimitador personalizado para o arquivo CSV. Pode ser qualquer personagem.
No exemplo seguinte, usaremos um ponto de vírgula (;) como o delimitador.
$ Get-Process | Export -csv -NotypeInformation -Delimiter ";" -Path/Home/Viktor/Desktop/Processos.CSV
Vamos verificar a saída do comando.
$ Get-content/home/viktor/desktop/processos.CSV
Anexando -se ao arquivo CSV existente
O Exportar-CSV O CMDlet suporta adicionar conteúdo aos arquivos CSV existentes. Pode ajudar a compilar dados em um único banco de dados.
Para anexar, adicione a bandeira "-Append". Use a localização do arquivo CSV existente como o valor para "-Path".
$ Get-Process | Exportar -CSV -Append -Path/Home/Viktor/Desktop/Processos.CSV
Selecionando propriedades para escrever para CSV
Vamos dar uma rápida olhada na saída do processo de obter primeiro.
$ Get-Process
Aqui, cada coluna mostra um certo tipo de informação sobre os processos atualmente em execução. Cada uma das colunas representa uma propriedade do processo associado. Até agora, trabalhamos com todas as propriedades dos processos (transferindo -os para um arquivo CSV). No entanto, nem todas as propriedades são necessárias para cada situação.
Podemos adicionar um filtro intermediário para obter apenas algumas propriedades selecionadas. Para fazer isso, levaremos a ajuda de outro cmdlet Selecionar objeto.
Exportaremos apenas o nome do processo (nome do processo) e id (id) no exemplo a seguir.
$ Get-Process | Select -object -Property ProcessName, ID | Export -csv -NotypeInformation -Path/Home/Viktor/Desktop/Processos.CSV
$ Get-content/home/viktor/desktop/processos.CSV
Sem sobrescrição
Se não estiver anexando ao arquivo existente, o Export-CSV substituirá o arquivo existente por padrão. Em muitas situações, isso pode causar exclusão injustificada de toras importantes. Para evitar esses acidentes, podemos dizer ao Export-CSV para não substituir um arquivo existente por padrão.
Para fazer isso, adicione a bandeira “-noclobber”.
$ Get-Process | Export -csv -noclobber -path/home/viktor/desktop/processos.CSV
Como você pode ver, agora lança um erro mencionando que o arquivo já existe.
Substituindo arquivos somente leitura
Por padrão, um arquivo somente leitura não permite a edição. No entanto, podemos usar o PowerShell para forçar a edição ao arquivo. Este recurso é assado diretamente no export-CSV. A maneira como é feita é solucionar o arquivo como somente leitura, executando a edição e depois marcando-o somente leitura novamente.
Para substituir o arquivo somente leitura existente, use o sinalizador "-force".
$ Get-Process | Export -csv -append -force -path/home/viktor/desktop/processos.CSV
Codificação de arquivo
Para codificação de arquivos, o export-CSV usa o UTF-8 por padrão. É a codificação universal para todos os arquivos de texto. No entanto, em situações específicas, a codificação diferente faz mais sentido. Felizmente, o Export-CSV suporta definir a codificação específica.
Para especificar uma codificação específica, use a bandeira "-codificação".
$ Get-Process | Exportação -CSV -codificação-Path/Home/Viktor/Desktop/Processos.CSV
Aqui está uma lista de todos os formatos de codificação suportados.
Pensamentos finais
O cmdlet export-CSV em PowerShell é uma ferramenta poderosa para exportar informações para o formato CSV. Este guia demonstra algumas das maneiras de exportar-CSV. Também pode ser implementado em scripts do PowerShell para automatizar a transferência de dados. Ele converte dados estruturados em um formato mais simples e legível pelo usuário que muitos aplicativos podem usar.
Computação feliz!