Cómo utilizar 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 esta información más en Excel u otro sistema. Para ello podemos utilizar la función Exportar-CSV en PowerShell.
La función Exportar-CSV convierte 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 utilizar la función Exportar-CSV, cómo evitar errores comunes y qué diferentes opciones existen que puede utilizar.
Exportación de PowerShell-CSV
El cmdlet Export-CSV es bastante sencillo y solo tiene algunas propiedades que son útiles:
- Ruta : (obligatorio) Ubicación del archivo CSV
- NoTypeInformation : elimina el encabezado de información de tipo de la salida. Ya no es necesario en PowerShell 6
- Delimitador: el valor predeterminado es la coma, pero puedes cambiarlo.
- Agregar: agregar a un archivo CSV existente
- Forzar : útil en combinación con Anexar
- NoClobber : no sobrescribe archivos existentes
- UseQuotes: (solo PowerShell 7) ajusta los valores entre comillas o no
Vamos a empezar con algo sencillo, exportar nuestros usuarios de Microsoft 365 a un archivo CSV. Voy a utilizar Azure AD en todos los ejemplos aquí, por lo que si desea seguirlos, asegúrese de conectar Azure AD primero.
El cmdlet Get-AzureADUser devuelve todos los usuarios de su inquilino de Microsoft 365, como puede ver en la captura de pantalla siguiente. Lo que vamos a hacer es exportar esta salida a un archivo CSV. Para hacer esto, simplemente podemos canalizar el cmdlet Export-CSV detrás de él:
Get-AzureADUser | Export-Csv c:\temp\azureadusers.csv -NoTypeInformationSuena 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.
Entonces, ¿por qué sucede esto? El cmdlet Export-CSV exporta todos los objetos individuales del cmdlet Get-AzureADUser. Si buscamos un único usuario de Azure AD, podrá ver todos los datos que se devuelven desde un único objeto de usuario:
Get-AzureADUser -Filter "Displayname eq 'Rudy Mens'" | select *Cómo exportar la información correcta con Export-CSV
Lo que debemos hacer es primero seleccionar 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 -NoTypeInformationEsto devolverá los campos seleccionados de cada usuario en un bonito archivo CSV que realmente podemos usar:
Agregar al archivo CSV con PowerShell
En algunas ocasiones, es posible que desees agregar información a un archivo CSV con PowerShell. Digamos que queremos agregar el administrador de cada usuario a la lista. Hay una manera más eficiente de hacer esto, pero en este caso, recorreremos todos los usuarios y obtendremos el administrador de Azure AD.
Consejo
Obtenga más información sobre la creación de scripts de PowerShell en esta guía completa
Para este ejemplo, creamos un objeto de PowerShell personalizado que contendrá la información del usuario y el administrador. Con el interruptor -append 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 agregué el interruptor -Force. De esta manera, se creará el archivo CSV si no existe y los objetos que tengan propiedades no coincidentes aún se podrán escribir en el archivo CSV. Solo escribirá las propiedades que coincidan; otras propiedades se descartan.
Otros parámetros útiles de Export-CSV en PowerShell
Hay un par de parámetros más que son útiles cuando se utiliza el cmdlet Export-CSV en PowerShell.
No Clobber
De forma predeterminada, el cmdlet Export-CSV sobrescribirá cualquier archivo existente cuando se utilice. Si no desea esto, puede agregar el parámetro -NoClobber. De esta manera, 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 de forma predeterminada por una coma. 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 incluir el nuevo delimitador entre comillas:
Get-AzureADUser | Select-Object -Property userprincipalname, displayname, jobtitle, department, city | Export-CSV c:\temp\azureaduser.csv -NoTypeInformation -Delimiter ';'UsoCotizaciones
Cuando exporta objetos en PowerShell 5 o 6, todos los valores están entre comillas. En algunas ocasiones, es posible que no quieras eso. Si está utilizando PowerShell 7, puede utilizar 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 AsNeededConcluyendo
El cmdlet Export-CSV es una función de PowerShell que uso bastante. 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.




