p>Command-separated Value
ou CSV
ficheiros são um tipo muito popular de ficheiros de texto que são utilizados para diferentes fins. O que torna o CSV especial é a capacidade de armazenar dados estruturados, delimitando os valores ou colunas com vírgula. Os ficheiros CSV são compatíveis com ficheiros Excel para importação e exportação.
Exportar para ficheiro CSV delimitado por vírgula
Comecemos com um exemplo simples. Get-Process
o comando é usado para listar processos em execução actualmente com diferentes informações como Handle, NPM, CPU,ID, ProcessName etc. Podemos usar o comando Export-CSV para armazenar estas informações de processos delimitadas com o comando.
PS> Get-Process
Agora podemos colocar estas informações de processos em execução num ficheiro CSV redireccionando a saída do Get-Process. Forneceremos o nome do ficheiro com a opção -Path
. O nome do ficheiro será ProcessList.csv.
PS> Get-Process | Export-CSV -Path ProcessList.csv
Alternativamente, podemos fornecer um directório diferente com a opção -Path. No comando seguinte iremos colocar o ficheiro ProcessList.csv no ficheiro C:\Users\İsmail Baydan\Desktop
.
PS> Get-Content 'C:\Users\İsmail Baydan\Desktop\ProcessList.csv'
Set Delimiter For CSV File
Delimitadores são uma parte importante dos ficheiros CSV. Por defeito, os ficheiros CSV utilizam o comando como um delimitador. Mas podemos alterar o delimitador o que quisermos. Utilizaremos a opção -Delimitador a fim de definir um carácter delimitador diferente. No exemplo seguinte, iremos definir o sinal de igual = como o delimitador. Colocar o delimitador dentro das aspas duplas é uma forma muito boa de evitar erros.
PS> Get-Process | Export-CSV -Delimiter "=" -Path ProcessList.csv
Export To Semicolon Delimitado CSV File
A vírgula é o delimitador padrão para os ficheiros CSV. Mas podemos utilizar diferentes delimitadores para separar colunas. Em alguns casos, uma vírgula pode ser usada no interior para o conteúdo que queremos colocar no ficheiro CSV. Isto irá danificar o ficheiro CSV, porque o delimitador e o conteúdo serão os mesmos e será susceptível de erro para analisar o conteúdo com o delimitador. Portanto, uma boa alternativa ao delimitador de comando é o ponto e vírgula que raramente é utilizado no conteúdo do ficheiro CSV. No exemplo seguinte, iremos definir ponto e vírgula como delimitador.
PS> Get-Process | Export-CSV -Delimiter ";" -Path ProcessList.csv
Select Properties To Write CSV File
Up até agora temos trabalhado com o comando Get-Process que irá listar todas as propriedades dos processos actualmente em execução. Em alguns casos, não precisamos de colocar todas as propriedades no ficheiro CSV. Podemos seleccionar quais as propriedades que podem ser colocadas no ficheiro CSV. Utilizaremos o comando Select-Object
e a sua opção -Property
como abaixo.
PS> Get-Process | Select-Object -Property ProcessName,Id | Export-CSV -Path ProcessList.csv
Aplicar ao ficheiro CSV existente
Outro caso de utilização para o comando Export-O CSV está a adicionar novo conteúdo CSV ao conteúdo CSV existente. Podemos usar a opção -Append
que adicionará novo conteúdo CSV ao ficheiro existente.
PS> Get-Process | Export-CSV -Delimiter -Append -Path ProcessList.csv
Não sobreescrever ficheiro CSV existente
Por comando padrão Export-CSV sobreescreverá no ficheiro existente sem qualquer aviso. Podemos evitar estas acções com a opção -NoClobber
que não sobreescreverá o ficheiro existente e imprimirá e registará o erro dado ficheiro já existente.
PS> Get-Process | Export-CSV -NoClobber -Path ProcessList.csv
Overescrever leitura-Apenas ficheiros
Por defeito, os ficheiros só de leitura podem ser editados, anexados por defeito. Mas o comando Export-CSV pode alterar o atributo só de leitura para edição e depois voltar a ser só de leitura. Vamos forçar a operação de escrita com a opção -Force
como abaixo.
PS> Get-Process | Export-CSV -Append -Force -Path ProcessList.csv
Set CSV File Encoding
As CSV file is a text file it has an encoding option. Por defeito, o UTF-8 é a codificação por defeito para os ficheiros de texto e CSV. Mas em alguns casos, podemos precisar de alterar a codificação padrão e definir uma codificação específica. Podemos utilizar a opção -Encodificação e fornecer um nome de codificação como ASCII. No exemplo seguinte, iremos definir a codificação do ficheiro CSV como ASCII.
PS> Get-Process | Export-CSV -Encoding ASCII -Path ProcessList.csv
Below são formatos de codificação populares e disponíveis que podem ser utilizados com o Export-CSV.
- ASCII
- BigEndianUnicode
- OEM
- Unicode
- UTF7
- UTF8NoBOM
- UTF32
UTF8li>UTF8BOM