Command-separated Value
o CSV
archivos son un tipo muy popular de archivos de texto que se utilizan para diferentes propósitos. Lo que hace especial a los CSV es la capacidad de almacenar datos estructurados delimitando los valores o columnas con comas. Los archivos CSV son compatibles con los archivos de Excel para importar y exportar.
Exportar a un archivo CSV delimitado por comas
Comenzaremos con un ejemplo sencillo. El comando Get-Process
se utiliza para listar los procesos que se están ejecutando actualmente con diferente información como Handle, NPM, CPU,ID, ProcessName etc. Podemos utilizar el comando Export-CSV para almacenar esta información de los procesos delimitada con el comando.
PS> Get-Process
Ahora podemos poner la información de estos procesos en ejecución en un archivo CSV redirigiendo la salida de Get-Process. Proporcionaremos el nombre del archivo con la opción -Path
. El nombre del fichero será ProcessList.csv.
PS> Get-Process | Export-CSV -Path ProcessList.csv
Alternativamente podemos proporcionar un directorio diferente con la opción -Path. En el siguiente comando pondremos el archivo ProcessList.csv en el directorio C:\Users\İsmail Baydan\Desktop
.
PS> Get-Content 'C:\Users\İsmail Baydan\Desktop\ProcessList.csv'
Configurar delimitador para el archivo CSV
Los delimitadores son una parte importante de los archivos CSV. Por defecto, los archivos CSV utilizan el comando como delimitador. Pero podemos cambiar el delimitador lo que queramos. Utilizaremos la opción -Delimitador para establecer un carácter delimitador diferente. En el siguiente ejemplo, pondremos el signo igual = como delimitador. Poner el delimitador dentro de las comillas dobles es una muy buena forma de evitar errores.
PS> Get-Process | Export-CSV -Delimiter "=" -Path ProcessList.csv
Exportar a archivo CSV delimitado por punto y coma
La coma es el delimitador estándar para los archivos CSV. Pero podemos utilizar diferentes delimitadores para separar las columnas. En algunos casos, se puede utilizar una coma dentro del contenido que queremos poner en el archivo CSV. Esto bloqueará el archivo CSV porque el delimitador y el contenido serán iguales y será propenso a errores al analizar el contenido con el delimitador. Así que una buena alternativa al delimitador de comandos es el punto y coma, que rara vez se utiliza en el contenido del archivo CSV. En el siguiente ejemplo, pondremos punto y coma como delimitador.
PS> Get-Process | Export-CSV -Delimiter ";" -Path ProcessList.csv
Seleccionar propiedades para escribir el archivo CSV
Hasta ahora hemos trabajado con el comando Get-Process que listará todas las propiedades de los procesos que se están ejecutando actualmente. En algunos casos no necesitamos poner todas las propiedades en el archivo CSV. Podemos seleccionar qué propiedades se pueden poner en el archivo CSV. Utilizaremos el comando Select-Object
y su opción -Property
como a continuación.
PS> Get-Process | Select-Object -Property ProcessName,Id | Export-CSV -Path ProcessList.csv
Añadir al archivo CSV existente
Otro caso de uso del comando Export-CSV es añadir un nuevo contenido CSV en el contenido CSV existente. Podemos utilizar la opción -Append
que añadirá nuevo contenido CSV al archivo existente.
PS> Get-Process | Export-CSV -Delimiter -Append -Path ProcessList.csv
No sobrescribir el archivo CSV existente
Por defecto el comando Export-CSV sobrescribirá en el archivo existente sin ninguna advertencia. Podemos evitar esta acción con la opción -NoClobber
que no sobrescribirá el archivo existente e imprimirá un error realted dado que el archivo ya existe.
PS> Get-Process | Export-CSV -NoClobber -Path ProcessList.csv
Sobreescribir archivos de sólo lectura
Por defecto los archivos de sólo lectura pueden ser se añaden por defecto. Pero el comando Export-CSV puede cambiar el atributo de sólo lectura para editar y luego volver a ser de sólo lectura. Forzaremos a la operación de escritura con la opción -Force
como a continuación.
PS> Get-Process | Export-CSV -Append -Force -Path ProcessList.csv
Configuración de la codificación del archivo CSV
Como el archivo CSV es un archivo de texto tiene una opción de codificación. Por defecto, el UTF-8 es la codificación por defecto para los archivos de texto y CSV. Pero en algunos casos, podemos necesitar cambiar la codificación por defecto y establecer una codificación específica. Podemos utilizar la opción -Encoding y proporcionar un nombre de codificación como ASCII. En el siguiente ejemplo, vamos a establecer la codificación del archivo CSV como ASCII.
PS> Get-Process | Export-CSV -Encoding ASCII -Path ProcessList.csv
A continuación se muestran los formatos de codificación populares y disponibles que se pueden utilizar con el Export-CSV.
- ASCII
- BigEndianUnicode
- OEM
- Unicode
- UTF7
- UTF8
- UTF8BOM
- UTF8NoBOM
- UTF32