Pide tu presupuesto ya!
Si necesita enviar información desde PowerShell a un archivo CSV, el cmdlet Export-CSV está aquí para ayudarle. Este cmdlet ahorra a los administradores mucho tiempo al convertir texto suelto en un formato estructurado. En lugar de jugar con Excel, podemos usar PowerShell para crear archivos CSV.
Puede crear archivos CSV para alimentar informes, enviarlos a bases de datos y más desde cualquier objeto de PowerShell con el Export-Csv cmdlet.
El formato CSV es simplemente una lista de filas separadas por comas almacenadas como un archivo de texto. Como es sólo un archivo de texto, podría técnicamente solo use un comando de archivo de texto genérico como Set-Content para hacer el trabajo. Sin embargo, utilizar un comando genérico requeriría construir nosotros mismos la estructura CSV necesaria. ¿Por qué hacer eso cuando ya tenemos un comando de exportación CSV? Export-Csv ¿Enviar salida CSV a un archivo?
Los archivos CSV necesitan una estructura específica. La capacidad de este cmdlet para comprender, leer y transformar información para CSV archivos es lo que hace que este cmdlet de PowerShell sea tan útil.
Administre e informe de Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descargue prueba gratis!
El Export-Csv El cmdlet tiene un único propósito; para guardar objetos de PowerShell en un archivo CSV.
Digamos que tienes un objeto con dos propiedades llamado 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 puede importar el contenido CSV e inspeccionar su apariencia.
PS> $testObject = [pscustomobject]@{'foo' = 1; 'bar' = 2}
PS> $testObject | Export-Csv -Path C:\TestObject.csv
PS> $testObject
foo bar
1 2
PS> Import-Csv -Path C:\TestObject.csv
foo bar
1 2
¡PowerShell esencialmente trata un objeto en la memoria y un archivo CSV de la misma manera! También se supone que las etiquetas de mis columnas son 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-Contentpodemos inspeccionar el texto sin formato para ver cuál es el Export-Csv comando exportado.
PS> Get-Content -Path C:\TestObject.csv
#TYPE System.Management.Automation.PSCustomObject
"foo","bar" "1","2"
Observe que el comando utiliza comillas dobles alrededor de cada entrada de fila. Esto también le permite incluir campos con espacios.
En Windows PowerShell 5.1, Export-CSV especifica el tipo de objeto que creó el archivo CSV. Si prefiere ver esta línea ahora, un parámetro popular es NoTypeInformation lo que elimina esta línea por completo.
Si trabaja con muchos archivos CSV o fuentes de datos diferentes, es posible que aprenda por las malas que Export-CSV sobrescribe los archivos existentes. No hay problema si estás usando el Append parámetro. El Append El parámetro le permite agregar filas al CSV en lugar de sobrescribir un archivo existente.
Otro parámetro útil es Delimiter. Ocasionalmente, es posible que necesite crear un archivo CSV que no utilice el separador de lista habitual (coma) para separar campos. En su lugar, tal vez necesites crear un archivo con una gran cantidad de datos que utilice tabulaciones como separadores o incluso punto y coma. El Export-Csv El cmdlet de PowerShell también puede ayudarnos con esto especificando cualquier delimitador que necesitemos.
PS> $testObject | Export-Csv -Path C:\TestObject.csv -Delimiter "`t"
PS> Get-Content -Path C:\TestObject.csv
#TYPE System.Management.Automation.PSCustomObject
"foo" "bar" "1" "2"
Al crear filas CSV, Export-Csv incluye todos los campos entre comillas. En algunas situaciones, esto puede no ser deseable. Desafortunadamente, no hay manera de evitarlo. Pero, usando un poco más de código, puedes lograrlo.
A continuación puede ver un ejemplo de cómo crear el archivo CSV. Entonces, Get-Content lee el archivo de texto sin formato, reemplaza todas las comillas dobles en la memoria por nada. Entonces Set-Content escribe esa información en la memoria en el disco.
$testObject | Export-Csv -Path C:\TestObject.csv
(Get-Content -Path C:\TestObject.csv -Raw).replace('"','') | Set-Content -Path C:\TestObject.csv
Administre e informe de Active Directory, Exchange y Microsoft 365 con ManageEngine ADManager Plus. ¡Descargue prueba gratis!
El Export-Csv cmdlet es una herramienta simple pero extremadamente útil para administrar datos CSV. Puede comprender la estructura de un archivo de datos CSV y transformar objetos de PowerShell en filas CSV.
No voy a volver al lote, o VBScript donde se crea un archivo CSV de un objeto existente requería crear una instancia de un FileSystemObject, crear un bucle y un montón de Write() ¡métodos!
¡Este comando es otra gran razón para comenzar a escribir código PowerShell hoy!
Leave a comment