El término CSV también tiene otros significados, por ejemplo, "valores separados por caracteres", "archivos delimitados de coma", etc.
En esta guía, demostraremos cómo exportar datos en CSV en PowerShell.
La estructura del archivo CSV
El formato CSV sigue una estructura muy simple. Cualquier archivo CSV tendrá ".CSV ”como extensión del archivo. Aquí, he generado un archivo CSV de muestra que contiene
Muestra de $ Cat.CSV
Como podemos ver, cada línea contiene varios valores separados por comas. No hay límite para cuántas entradas puede contener un archivo CSV.
La simplicidad de la estructura es la característica clave. El formato CSV está diseñado para que pueda usarse fácilmente para exportar datos a otros programas. El resultado también es legible por humanos y se puede ver utilizando cualquier editor de texto. Aplicaciones de oficina como MS Excel, Calc, etc., También admite CSV de forma predeterminada.
Exportar a CSV desde PowerShell
PowerShell es un poderoso lenguaje de conchas y secuencias de comandos. Admite numerosas características básicas y avanzadas, incluida la exportación de varios datos al formato CSV.
Similar a cualquier otro shell, PowerShell tiene su propio conjunto de comandos, llamado cmdlets. Para exportar a CSV, PowerShell viene con un cmdlet dedicado Exportación-CSV. Se necesita un objeto como la entrada y la exporta a un archivo CSV.
Debido a la estructura simple, también podría lograrse usando el Contenido de set cmdlet. Sin embargo, requiere que definir manualmente la estructura CSV. Usando Exportación-CSV reduce significativamente la carga de trabajo.
La página de ayuda de Export-CSV mostrará todos los comandos compatibles.
$ AYUDA EXPORT-CSV
Un ejemplo práctico sería exportar la lista de procesos de ejecución. Puede ser útil en ciertos escenarios de depuración/monitoreo. Para obtener la lista de procesos, usaremos el cmdlet Obtener procesos.
$ Get-Process
Ahora, tuve la salida a Exportación-CSV.
$ Get-Process | Export -CSV -Path/Home/Viktor/Desktop/Processes.CSV
Aquí, la bandera "-path" describe la ubicación para guardar el archivo CSV generado. Para verificar el contenido del archivo CSV, use el cmdlet Obtener el contenido.
$ Get-Content/Home/Viktor/Desktop/Processes.CSV
Delimitador personalizado
Para cualquier archivo CSV, es estándar usar coma (,) como delimitador. Sin embargo, es posible que desee cambiar el delimitador a algo más que una coma en ciertas situaciones. El cmdlet export-csv admite establecer un delimitador personalizado para el archivo CSV. Puede ser cualquier personaje.
En el siguiente ejemplo, usaremos un semicolon (;) como delimitador.
$ Get-Process | Export -csv -notypeinformation -delimiter ";" -Path/Home/Viktor/Desktop/Processes.CSV
Verifiquemos la salida del comando.
$ Get-Content/Home/Viktor/Desktop/Processes.CSV
Agregar al archivo CSV existente
El Exportación-CSV Cmdlet admite agregar contenido a los archivos CSV existentes. Puede ayudar a compilar datos en una sola base de datos.
Para agregar, agregue la bandera "-Apend". Use la ubicación del archivo CSV existente como el valor de "-Path".
$ Get-Process | Export -CSV -Append -Path/Home/Viktor/Desktop/Processes.CSV
Selección de propiedades para escribir en CSV
Echemos un vistazo rápido a la salida de Get-Process First.
$ Get-Process
Aquí, cada columna muestra un cierto tipo de información sobre los procesos de ejecución actualmente. Cada una de las columnas representa una propiedad del proceso asociado. Hasta ahora, hemos estado trabajando con todas las propiedades de los procesos (transferirlos a un archivo CSV). Sin embargo, no todas las propiedades son necesarias para cada situación.
Podemos agregar un filtro intermedio para obtener solo algunas de las propiedades seleccionadas. Para hacerlo, tomaremos la ayuda de otro cmdlet Selección-objeto.
Solo exportaremos el nombre del proceso (ProcessName) e ID (ID) en el siguiente ejemplo.
$ Get-Process | Select -object -Property ProcessName, ID | Export -CSV -NotypeInformation -Path/Home/Viktor/Desktop/Processes.CSV
$ Get-Content/Home/Viktor/Desktop/Processes.CSV
Sin sobrescritura
Si no se agrega al archivo existente, Export-CSV sobrescribirá el archivo existente de forma predeterminada. En muchas situaciones, esto puede causar una eliminación injustificada de registros importantes. Para evitar tales accidentes, podemos decirle a Export-CSV que no sobrescriba un archivo existente de forma predeterminada.
Para hacerlo, agregue la bandera "-Noclobber".
$ Get-Process | Export -CSV -Noclobber -Path/Home/Viktor/Desktop/Processes.CSV
Como puede ver, ahora arroja un error que menciona que el archivo ya existe.
Sobrescribir archivos de solo lectura
Por defecto, un archivo de solo lectura no permite la edición. Sin embargo, podemos usar PowerShell para forzar la edición al archivo. Esta característica se hornea directamente en exportación-CSV. La forma en que se hace es desascarando el archivo como de solo lectura, realizando la edición y luego marcándolo de solo solo lectura.
Para sobrescribir el archivo de solo lectura existente, use la bandera "-force".
$ Get-Process | Export -csv -append -force -path/home/viktor/escritorio/procesos.CSV
Codificación de archivo
Para la codificación de archivos, Export-CSV usa UTF-8 de forma predeterminada. Es la codificación universal para todos los archivos de texto. Sin embargo, en situaciones específicas, la codificación diferente tiene más sentido. Afortunadamente, Export-CSV admite la definición de codificación específica.
Para especificar una codificación específica, use el indicador "-Coding".
$ Get-Process | Export -csv -codificación-Path/Home/Viktor/Desktop/Processes.CSV
Aquí hay una lista de todos los formatos de codificación compatibles.
Pensamientos finales
El cmdlet export-CSV en PowerShell es una herramienta poderosa para exportar información al formato CSV. Esta guía demuestra algunas de las formas de exportar CSV. También se puede implementar en Scripts de PowerShell para automatizar la transferencia de datos. Convierte datos estructurados en un formato más simple y legible por el usuario que muchas aplicaciones pueden usar.
Computación feliz!