Si necesitas enviar información desde PowerShell a un archivo CSV, el cmdlet Export-CSV está aquí para ayudar. Este cmdlet ahorra mucho tiempo a los administradores al convertir texto suelto en un formato estructurado. En lugar de lidiar con Excel, podemos usar PowerShell para crear archivos CSV.
Puedes crear archivos CSV para generar informes, enviar a bases de datos y más desde cualquier objeto de PowerShell con el cmdlet Export-Csv
.
El formato CSV es simplemente una lista de filas separadas por comas almacenadas como un archivo de texto. Dado que es solo un archivo de texto, técnicamente podríamos usar un comando genérico de archivo de texto como Set-Content
para hacer el trabajo. Sin embargo, usar un comando genérico requeriría que construyamos la estructura CSV necesaria nosotros mismos. ¿Por qué hacer eso cuando ya tenemos un comando de exportación CSV en Export-Csv
para enviar la salida CSV a un archivo?
Los archivos CSV necesitan una estructura específica. La capacidad de este cmdlet para entender, leer y transformar información a archivos CSV es lo que hace que este cmdlet de PowerShell sea tan útil.
Administra e informa sobre Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descarga la prueba gratuita!
Objetos -eq Filas de CSV
El cmdlet Export-Csv
tiene un único propósito; guardar objetos de PowerShell en un archivo CSV.
Supongamos que tienes un objeto con dos propiedades llamadas foo
y bar
. Cada una de estas propiedades tiene valores respectivos de 1
y 2
. Cuando envías ese objeto a Export-Csv
, creará un archivo CSV con dos columnas y una sola fila. Luego puedes importar el contenido del CSV e inspeccionar cómo se ve.
¡PowerShell básicamente trata un objeto en memoria y un archivo CSV de la misma manera! También espera que mis etiquetas de columna sean encabezados. Exportar objetos usando este cmdlet es como guardar el objeto en el sistema de archivos. Usando el comando de texto genérico de PowerShell Get-Content
, podemos inspeccionar el texto sin formato para ver qué exportó el comando Export-Csv
.
Observa que el comando utiliza comillas dobles alrededor de cada entrada de fila. Esto te permite incluir campos con espacios también.
Parámetros Útiles de Export-CSV
En Windows PowerShell 5.1, Export-CSV cmdlte el tipo de objeto que creó el archivo CSV. Si prefieres no ver esta línea, un parámetro popular es NoTypeInformation
que elimina completamente esta línea.
Si trabajas con muchos archivos CSV o fuentes de datos diferentes, es posible que aprendas de la manera difícil que Export-CSV sobrescribe los archivos existentes. Sin embargo, no hay problema si estás utilizando el parámetro Append
. El parámetro Append
te permite agregar filas al CSV en lugar de sobrescribir un archivo existente.
Otro parámetro útil es Delimiter
. Ocasionalmente, es posible que necesites crear un archivo CSV que no utilice el separador de lista habitual (coma) para separar los campos. En su lugar, tal vez necesites crear un archivo con una gran cantidad de datos que utilice tabuladores como separadores o incluso puntos y comas. El cmdlet PowerShell Export-Csv
también puede ayudarnos con esto especificando el delimitador que necesitamos.
Manejo de comillas
Cuando se crean filas CSV, Export-Csv
encierra todos los campos entre comillas. En algunas situaciones, esto podría no ser deseable. Desafortunadamente, no hay forma de evitarlo. Pero, usando un poco más de código, puedes lograrlo.
A continuación, puedes ver un ejemplo de cómo crear el archivo CSV. Luego, Get-Content
lee el archivo de texto sin procesar, reemplaza todas las comillas dobles en la memoria con nada. Luego, Set-Content
escribe esa información en memoria de vuelta al disco.
Gestiona y realiza informes sobre Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descarga la prueba gratuita!
Resumen
El cmdlet Export-Csv
es una herramienta simple pero extremadamente útil para gestionar datos CSV. Puede comprender la estructura de un archivo de datos CSV y transformar objetos de PowerShell en filas 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 es otra excelente razón para empezar a escribir código PowerShell hoy!