Cómo usar Export-CSV en PowerShell

Con PowerShell, puede extraer todo tipo de información de servicios como Active Directory o Microsoft 365.

Pero a veces necesita procesar más esta información en Excel u otro sistema. Para ello podemos utilizar la función Export-CSV de PowerShell.

La función Export-CSV convierte los objetos de PowerShell en una cadena CSV y los guarda en un archivo CSV.

Si solo necesita una cadena CSV, también puede usar la función ConvertTo-CSV en PowerShell.

En este artículo, veremos cómo usar la función Exportar-CSV, cómo evitar errores comunes y qué diferentes opciones hay que puede usar.

Exportación de PowerShell-CSV

El cmdlet Export-CSV es bastante sencillo y solo tiene algunas propiedades que son útiles:

  • Sendero – (Obligatorio) Ubicación del archivo CSV
  • NoTypeInformation – Elimina el encabezado de información Tipo de la salida. Ya no es necesario en PowerShell 6
  • delimitador – El valor predeterminado es una coma, pero puede cambiarlo
  • Adjuntar – Agregar a un archivo CSV existente
  • Fuerza – Útil en combinación con Append
  • NoClobber – No sobrescriba los archivos existentes
  • Usar comillas – (Solo PowerShell 7) ajustar valores entre comillas o no

Vamos a comenzar con algo simple, exportar nuestros usuarios de Microsoft 365 a un archivo CSV. Voy a usar Azure AD a lo largo de los ejemplos aquí, así que si desea seguir adelante, asegúrese de conectar Azure AD primero.

los Get-AzureADUser cmdlet devuelve todos los usuarios en su inquilino de Microsoft 365, como puede ver en la siguiente captura de pantalla. Lo que vamos a hacer es exportar esta salida a un archivo CSV. Para hacer esto, simplemente podemos canalizar el Export-CSV cmdlet detrás de él:

Exportar CSV PowerShell
Get-AzureADUser | Export-Csv c:\temp\azureadusers.csv -NoTypeInformation

Suena fácil, ¿verdad? Bueno, si abre el archivo CSV, notará que obtuvimos un poco más de lo que necesitábamos y no la buena lista que habíamos visto antes en PowerShell.

Salida de PowerShell a csv

Entonces, ¿por qué sucede esto? El cmdlet Export-CSV exporta todos los objetos individuales desde el cmdlet Get-AzureADUser.

Si buscamos un solo usuario de Azure AD, puede ver todos los datos que se devuelven desde un solo objeto de usuario:

 Get-AzureADUser -Filter "Displayname eq 'Rudy Mens'" | select *
CSV de exportación de PowerShell

Cómo exportar la información correcta con Export-CSV

Lo que debemos hacer es seleccionar primero la información correcta (propiedades) que necesitamos antes de exportar los objetos de usuario a un archivo CSV.

Get-AzureADUser | select userprincipalname, displayname, jobtitle, department, city | Export-CSV c:\temp\azureaduser.csv -NoTypeInformation

Esto devolverá los campos seleccionados de cada usuario en un buen archivo CSV que podemos usar:

salida powershell para excel

Agregar a un archivo CSV con PowerShell

En algunas ocasiones, es posible que desee agregar información a un archivo CSV con PowerShell. Digamos que queremos agregar el administrador de cada usuario a la lista. Hay una forma más eficiente de hacer esto, pero en este caso, vamos a recorrer todos los usuarios y obtener el administrador de Azure AD.

Para este ejemplo, creamos un objeto de PowerShell personalizado que contendrá la información del usuario y el administrador. Con el -append cambiar podemos agregar el usuario al archivo CSV.

$users = Get-AzureADUser

$users | ForEach-Object {
    $Manager = Get-AzureADUserManager -ObjectId $_.ObjectId
    
    $user =[pscustomobject]@{
        'Displayname' = $_.displayname
        'Jobtitle' = $_.jobtitle
        'Department' = $_.Department
        'Manager' = $manager.displayname
    }
    $user | Export-CSV c:\temp\usermanager.csv -Append -NoTypeInformation -Force
}

También he agregado el interruptor -Force. De esta manera, el archivo CSV se creará si no existe y los objetos que tienen propiedades que no coinciden aún se pueden escribir en el archivo CSV. Sin embargo, solo escribirá las propiedades que coincidan, otras propiedades se descartan.

Otros parámetros útiles de Export-CSV en PowerShell

Hay un par de otros parámetros que son útiles cuando usa el cmdlet Export-CSV en PowerShell.

NoClobber

De forma predeterminada, el cmdlet Export-CSV sobrescribirá cualquier archivo existente cuando se utilice.

Si no desea esto, puede agregar el -NoClobber parámetro. De esta forma, si el archivo ya existe, obtendrá un error que le impedirá sobrescribir el archivo.

delimitador

Los valores en un archivo de valores separados por comas (CSV) están separados por comas de manera predeterminada.

No todas las aplicaciones siguen este estándar. Entonces, cuando necesite importar los datos a otra aplicación que requiera un punto y coma (;), por ejemplo, puede cambiar el delimitador.

Sin embargo, asegúrese de encerrar el nuevo delimitador entre comillas:

Get-AzureADUser | Select-Object -Property userprincipalname, displayname, jobtitle, department, city | Export-CSV c:\temp\azureaduser.csv -NoTypeInformation -Delimiter ';'

Usar comillas

Cuando exporta objetos en PowerShell 5 o 6, todos los valores aparecen entre comillas.

En algunas ocasiones, es posible que no quieras eso. Si usa PowerShell 7, puede usar el parámetro -UseQuotes.

Este parámetro tiene un par de opciones:

  • Según sea necesario
  • Siempre (predeterminado)
  • Nunca
 Get-Process | export-csv -Path c:\temp\process.csv -UseQuotes AsNeeded

Terminando

El cmdlet Export-CSV es una función de PowerShell que uso mucho. Es realmente útil extraer datos de Microsoft 365 rápidamente para informes u otras tareas.

Asegúrese de seleccionar primero las propiedades correctas al exportar objetos. Este es el error más común cuando se trata de exportar datos de PowerShell a Excel.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

GUI de PowerShell - Cómo empezar

GUI de PowerShell – Cómo empezar

He creado muchos scripts de PowerShell durante los últimos años. Todo con un solo propósito para automatizar mi trabajo de ...
Leer Más
Cómo usar Get-ADGroup en PowerShell

Cómo usar Get-ADGroup en PowerShell

¿Necesita obtener todos los grupos en su Active Directory o simplemente necesita encontrar la ubicación del grupo que se esconde ...
Leer Más
Cómo descargar un archivo con PowerShell

Cómo descargar un archivo con PowerShell

PowerShell es un excelente lenguaje de secuencias de comandos para escribir todo tipo de secuencias de comandos. Pero, ¿sabía que ...
Leer Más
Cómo utilizar PowerShell String Contiene

Cómo utilizar PowerShell String Contiene

El operador Contiene en PowerShell es un poco extraño. Probablemente desee verificar si una cadena contiene una palabra o un ...
Leer Más
ADUser - Cómo encontrar y exportar usuarios de AD con PowerShell

ADUser – Cómo encontrar y exportar usuarios de AD con PowerShell

Active Directory es nuestra fuente principal cuando se trata de administrar cuentas de usuario. La consola de administración es excelente ...
Leer Más
Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

¿Necesita exportar todas las computadoras desde una unidad organizativa o buscar una computadora en su Active Directory? ¿O quieres contar ...
Leer Más

Deja un comentario