Herramienta de exportación de usuarios de Active Directory: CSV/JSON
Exportar usuarios (u otros objetos) desde Active Directory puede resultar muy útil.
PowerShell es la forma más sencilla de hacerlo, pero existen algunas opciones.
La mayoría de los administradores exportarán datos automáticamente al formato CSV, pero esta no siempre es la mejor opción.
Si necesita utilizar los datos exportados mediante programación, suele ser mejor exportarlos como JSON.
Este artículo cubrirá ambas opciones. Pero primero:
¿Qué datos exportar desde Active Directory?
Puede exportar usuarios utilizando el comando Get-ADUser (disponible a través de RSAT).
Si desea exportar otros tipos de objetos, puede utilizar Get-ADComputer, Get-ADGroup o el Get-ADObject genérico.
Además del tipo de objeto, también debes tomar una decisión sobre el alcance de los objetos y atributos:
- ¿A qué OU limita la búsqueda?
- ¿Qué filtrado adicional quieres?
- ¿Qué atributos/propiedades desea exportar?
La unidad organizativa se designa mediante el parámetro SearchBase, por ejemplo:
Get-ADUser -Filter * -SearchBase "OU=Alabama,OU=UnitedStates,OU=Users,OU=E365M,DC=Easy365Manager,DC=local"El filtrado adicional se realiza mejor utilizando el potente filtro LDAP, por ejemplo:
Get-ADUser -LDAPFilter "(department=marketing)"De forma predeterminada, Get-ADUser solo devolverá un conjunto muy limitado de propiedades de usuario.
Se pueden designar propiedades adicionales usando el interruptor Propiedades y Select-Object CmdLet, por ejemplo:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalNameTodo lo que necesita ahora es combinar el alcance de la OU, el filtro LDAP y la selección de propiedades; Entonces tienes tu consulta.
A continuación, debes seleccionar el tipo de exportación que deseas realizar: CSV o JSON.
Cómo exportar usuarios de AD a CSV usando PowerShell
Este formato es útil principalmente cuando el consumidor conoce bien Excel y, por ejemplo, necesita presentar datos a la gerencia.
Un ejemplo es un director de proyecto que quiere que usted le proporcione una descripción general del progreso de la migración de buzones de correo que puede presentar al CIO.
Al proporcionar los datos sin procesar en formato CSV, el director del proyecto puede utilizar fácilmente fórmulas de Excel para resumir los datos y crear bonitos gráficos circulares.
La forma más sencilla de extraer propiedades de usuario seleccionadas en CSV sería algo como esto:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalName | Export-Csv c:\tmp\ADUsers.csv -NoTypeInformationDebes abrir el archivo .csv, dividir los datos en columnas, aplicar un filtro y guardarlo como .xlsx antes de enviarlo al administrador del proyecto:
Cómo exportar usuarios de AD a JSON usando PowerShell
Si necesita acceder a los datos exportados mediante programación, es mucho mejor exportar los datos como JSON.
Al guardar los datos en JSON, puede volver a importarlos fácilmente si es necesario.
Un ejemplo es exportar algunas propiedades del usuario para realizar una copia de seguridad antes de realizar un cambio programado.
La forma más sencilla de extraer propiedades de usuario seleccionadas en JSON sería algo como esto:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalName | ConvertTo-Json -Compress | Out-File "c:\tmp\ADUsers.json"
Los datos exportados serán similares a los siguientes:
Si necesita echar un vistazo rápido a los datos (y suponiendo que no sean confidenciales), cópielos en un conversor de JSON a tabla en línea:
¡La verdadera diversión con los datos exportados JSON radica en la fácil conversión a objetos programables!
Utilice el siguiente PowerShell CmdLet para convertir los datos nuevamente en una colección de usuarios:
$Users = Get-Content "C:\tmp\ADUsers.json" | ConvertFrom-JsonLuego puede usar fácilmente la variable $Users para importar datos, exportar subconjuntos de datos a CSV y otras cosas:
PS C:\> $Users | ? { $_.givenName -eq 'james' -and $_.sn -like 'm*' } | ft
sAMAccountName givenName sn userPrincipalName
-------------- --------- -- -----------------
james.miller James Miller james.miller@azure.skrubbeltrang.com
james.martinez James Martinez james.martinez@azure.skrubbeltrang.com
james.moore James Moore james.moore@azure.skrubbeltrang.com
james.martin James Martin james.martin@azure.skrubbeltrang.com
james.mitchell James Mitchell james.mitchell@azure.skrubbeltrang.com
james.morris James Morris james.morris@azure.skrubbeltrang.com
james.morales James Morales james.morales@azure.skrubbeltrang.com
james.murphy James Murphy james.murphy@azure.skrubbeltrang.com
james.morgan James Morgan james.morgan@azure.skrubbeltrang.com
james.mendoza James Mendoza james.mendoza@azure.skrubbeltrang.com
james.myers James Myers james.myers@azure.skrubbeltrang.comResumen
Con un poco de planificación, puede proporcionar rápidamente potentes exportaciones de datos de Active Directory.
Considere el alcance de su exportación en términos de unidades organizativas, filtrado LDAP y propiedades.
Tenga en cuenta si los datos exportados se utilizarán para informes de Excel o procesamiento programático posterior.



