¿Cómo extraer miembros del grupo de Active Directory y exportarlos a un archivo CSV? – TrucosInformaticos

Powershell

En este artículo, veremos algunos ejemplos del uso de PowerShell para extraer miembros de un grupo de diferentes grupos de Active Directory. Este artículo debería enseñarle cómo crear una lista de cuentas en un grupo específico de Active Directory y exportarla a un archivo CSV, que es conveniente para procesar en MS Excel y otros programas de Office.

Herramientas para enumerar los miembros del grupo de anuncios

Anteriormente, para crear una lista de usuarios en un grupo de Active Directory, era necesario utilizar scripts VBS o utilidades de línea de comandos DSQuery o CSVDE, que no eran lo suficientemente flexibles ni convenientes.

Para interactuar con Active Directory desde PowerShell, Microsoft desarrolló un módulo especial: el módulo PowerShell Active Directory. Por primera vez este módulo apareció en Windows Server 2008 R2 y para poder usarlo primero debes cargarlo en tu sesión de PowerShell:

Import-Module ActiveDirectory

En Windows Server 2012/R2/Windows Server 2016, este módulo se instala y carga automáticamente cuando la función ADDS (Servicios de dominio de Active Directory) se instala en el servidor cuando el servidor se promueve a controlador de dominio.

En los sistemas operativos de escritorio (Windows 10/Windows 7), el módulo Active Directory para Windows PowerShell se incluye en las herramientas de administración remota del servidor, que debe descargar, instalar y habilitar por separado.

cómo exportar la lista de usuarios desde el directorio activo powershell

Tenga en cuenta que para utilizar el módulo ActiveDirectory, no necesita ser miembro del grupo Administradores de dominio; cualquier usuario de dominio autenticado puede obtener información sobre los usuarios y grupos de Active Directory que utilizan el módulo AD PowerShell.

Usando el cmdlet Get-ADGroupMember

Para obtener información sobre la pertenencia al grupo AD, utilice el cmdlet Get-ADGroupMember.

Por ejemplo, para mostrar la lista de miembros del grupo Administradores de dominio, ejecute el siguiente comando:

Get-ADGroupMember ‘Domain Admins’

PowerShell exporta la membresía del grupo de usuarios a CSV

Mostrar la lista completa de grupos en Active Directory

Si no conoce el nombre exacto del grupo, puede mostrar la lista completa de grupos en Active Directory usando el comando:

Get-ADGgroup -filter * | sort name | select Name

Puede mostrar solo nombres de usuario:

Get-ADGroupMember -Identity ‘Domain Admins’| ft name

powershell exporta grupos de anuncios y miembros a csv

Obtener membresías de grupos anidados

Si el grupo especificado contiene otros grupos de Active Directory, debe utilizar el recursivo parámetro para enumerar los miembros de Active Directory según grupos anidados.

Get-ADGroupMember -Identity ‘Domain Admins’ -Recursive | ft name

El modificador -recursivo indica al comando Get-ADGroupMember que analice cada grupo anidado y muestre solo objetos que no sean contenedores (usuario o computadora). Este comando mostrará incluso aquellos usuarios que no pertenecen directamente al grupo especificado.

Obtener información detallada del grupo de Active Directory

Puede mostrar información más detallada sobre los miembros del grupo de Active Directory:

Get-ADGroupMember -Identity ‘Domain Admins’ | foreach { Get-ADUser $_ -Properties * }

Puede utilizar el comando PowerShell más complejo, que le permite enumerar todos los miembros de un determinado grupo de seguridad de dominio con información sobre la empresa, departamento y puesto de trabajo, seguido de ordenarlos y agruparlos según el atributo específico (empresa):

Get-ADGroupMember -Recursive ‘Domain Admins’ | ForEach {

Get-ADUser -filter {samaccountname -eq $_.SamAccountName}  -Properties displayName, company, title, department

}  | Sort-Object company,displayName | Format-Table displayName,company,department,title -GroupBy company -AutoSize

exportar usuarios de anuncios a csv

Extraiga los miembros del grupo de Active Directory y expórtelos a un archivo CSV

Para exportar la membresía del grupo de Active Directory a un archivo de texto, agregue el siguiente comando:

| Out-File -Width 5000 "C:\PS\ADGroupUsersByCompany.txt"

Para exportar la lista al CSV csv, agregue la siguiente tubería:

| Export-Csv -NoTypeInformation .ADGroupUsersByCompany.csv -Encoding Unicode

Puedes calcular el número total de usuarios en un grupo:

(Get-ADGroupMember -Identity Administrators).Count

Aquí hay otro ejemplo útil. Intentemos encontrar todos los grupos AD que contengan el Administración palabra clave en el nombre y mostrar los usuarios que se agregan en estos grupos. Para mostrar sólo objetos únicos, utilice el argumento -uniq:

Get-ADGroup -filter 'SamAccountName -like "*Admin*"' | Get-ADGroupMember -recursive|Select-Object -uniq

En algunos casos, puede encontrar un error que ocurre durante la ejecución del comando Get-ADGroupMember:

Get-ADGroupMember: el atributo o valor del servicio de directorio especificado no existe

Esto significa que el grupo incluye usuarios de otros bosques (principales de seguridad externos). El cmdlet Get-ADGroupMember no admite trabajar con usuarios de diferentes bosques en Active Directory.

Errores comunes y solución de problemas

Puede encontrar varios errores comunes al trabajar con PowerShell y Active Directory. Así es como podrías abordarlos:

Error: «El atributo o valor del servicio de directorio especificado no existe» – Este error ocurre cuando el grupo incluye usuarios de otros bosques (principales de seguridad externos). El cmdlet Get-ADGroupMember no admite trabajar con usuarios de diferentes bosques en Active Directory.

En este caso, necesitará utilizar métodos alternativos para atraer a estos miembros del grupo o trabajar directamente dentro del bosque externo.

Error: «Get-ADGroupMember: se superó el límite de tamaño para esta solicitud» – Este error suele aparecer cuando se utiliza Get-ADGroupMember en un grupo con más de 5000 miembros. Una posible solución implica recuperar a todos los usuarios mediante los cmdlets Get-ADGroup y Get-ADUser.

Recuerde, los mensajes de error son sus amigos. Proporcionan información valiosa sobre los problemas y, a menudo, le indican la dirección correcta para resolverlos.

Mejores prácticas

Al administrar membresías de grupos de Active Directory mediante PowerShell, considere las siguientes mejores prácticas:

  • Privilegios mínimos: Ejecute scripts con los permisos mínimos necesarios para realizar la tarea. Evite utilizar una cuenta de administrador de dominio para tareas rutinarias que se puedan realizar con privilegios inferiores.
  • Usar comentarios: Es importante comentar tus guiones, especialmente cuando empiezan a volverse complejos. Esto le permitirá a usted (o a otra persona) comprender qué hace cada parte del guión cuando lo revise en el futuro.
  • Manejo de errores: Incluya un manejo adecuado de errores en sus scripts. Intente utilizar los bloques Try/Catch/Finally para manejar con elegancia posibles errores y excepciones.
  • Prueba antes de la implementación: Pruebe siempre sus scripts en un entorno controlado y que no sea de producción antes de implementarlos en un sistema en vivo.

Técnicas avanzadas

Para aquellos que buscan técnicas más avanzadas, aquí hay algunas formas en las que pueden usar PowerShell y Active Directory de manera más efectiva:

Automatización con Programador de Tareas: Puede automatizar la exportación de membresías de grupos programando su script de PowerShell para que se ejecute en intervalos específicos utilizando el Programador de tareas de Windows. Esto es especialmente útil para la auditoría periódica de las membresías de grupos.

exportar usuarios del directorio activo a csv

Creación de funciones personalizadas: Si utiliza bloques de código similares repetidamente en sus scripts, considere crear funciones personalizadas. Esto ayuda a reducir la redundancia de código y hace que sus scripts estén más organizados y manejables.

Utilice la comunicación remota de PowerShell: La comunicación remota de PowerShell le permite ejecutar comandos en sistemas remotos. Puede utilizar esto para interactuar con Active Directory en un controlador de dominio remoto, lo que le permitirá administrar su Active Directory desde cualquier sistema de su red.

exportar usuarios desde el directorio activo a csv

Preguntas frecuentes

1. ¿Por qué es importante exportar las membresías de grupos de Active Directory a un archivo CSV?

Exportar membresías de grupos particulares a un archivo CSV proporciona una instantánea clara, concisa y editable de las estructuras de su grupo. Esto puede ser esencial para fines de auditoría, resolución de problemas o planificación, y también ofrece una forma de respaldo en caso de que surja la necesidad de restaurar información.

2. ¿Qué hace el cmdlet de PowerShell ‘Get-ADGroupMember’?

El cmdlet ‘Get-ADGroupMember’ en PowerShell recupera los miembros de un grupo de AD. Puede usarlo para enumerar todos los usuarios, computadoras y subgrupos dentro de un grupo AD en particular, lo que lo hace invaluable para comprender la composición del grupo.

3. ¿Cómo puedo asegurarme de que mi archivo CSV exportado esté en un formato fácil de usar?

Exportar los datos con encabezados adecuados y datos bien estructurados es el primer paso. El cmdlet ‘Export-Csv’ en PowerShell le permite especificar un delimitador, lo que puede ayudar a organizar los datos para una fácil interpretación. También es beneficioso elegir un orden lógico para las columnas y limpiar cualquier dato innecesario antes de exportar.

4. ¿Qué puedo hacer si el cmdlet ‘Get-ADGroupMember’ falla debido a grupos de AD grandes?

Debido a su limitación predeterminada, el cmdlet ‘Get-ADGroupMember’ puede fallar si el grupo tiene más de 5000 miembros. En tales casos, puede usar los cmdlets ‘Get-ADGroup’ y ‘Get-ADUser’ junto con un bucle foreach para recuperar todos los miembros de manera confiable.

5. ¿Existen herramientas alternativas a PowerShell para exportar membresías de grupos de AD a un archivo CSV?

Varias herramientas de terceros ofrecen interfaces gráficas fáciles de usar para administrar tareas de AD, incluida la exportación de membresías de grupos a archivos CSV. Herramientas como SolarWinds, ManageEngine ADManager y otras pueden resultar útiles si no se siente cómodo con las secuencias de comandos de PowerShell.

6. ¿Qué permisos se requieren para utilizar el cmdlet Get-ADGroupMember?

Si bien no es necesario ser miembro del grupo Administradores de dominio para utilizar el cmdlet Get-ADGroupMember, necesita ciertos permisos en Active Directory. Cualquier usuario de dominio autenticado puede obtener información sobre los usuarios y grupos de Active Directory utilizando el módulo PowerShell de Active Directory (AD). Sin embargo, necesitará los permisos adecuados si necesita realizar cambios o administrar grupos.

7. ¿Cómo puedo usar PowerShell para agregar un usuario a un grupo de AD?

Se puede agregar un usuario a un grupo de AD mediante el cmdlet Add-ADGroupMember. Por ejemplo, para agregar un usuario con el nombre de usuario «jdoe» al grupo «Departamento de TI», usaría el comando Add-ADGroupMember -Identidad ‘Departamento de TI’ -Miembros ‘jdoe’.

8. ¿Por qué falla el comando ‘Get-ADGroupMember’ con grupos de AD grandes?

El cmdlet ‘Get-ADGroupMember’ tiene un límite predeterminado y puede fallar si el grupo tiene más de 5000 miembros. En tales casos, puede usar los cmdlets ‘Get-ADGroup’ y ‘Get-ADUser’ junto con un bucle foreach para recuperar todos los miembros de manera confiable.

9. ¿Puedo modificar las propiedades de un usuario de AD con PowerShell?

Sí, puede modificar las propiedades de un usuario de AD con el cmdlet Set-ADUser. Por ejemplo, para cambiar el puesto de trabajo de un usuario, puede usar el comando Set-ADUser jdoe -Title ‘Nuevo título’.

10. ¿Es posible recuperar el administrador de un miembro del grupo AD usando PowerShell?

Absolutamente. Puede hacer esto buscando primero al miembro del grupo con ‘Get-ADGroupMember’ y luego obteniendo al administrador con ‘Get-ADUser’. El comando se vería así Get-ADUser (Get-ADGroupMember -Identity ‘GroupName’ | Select-Object -ExpandProperty SamAccountName) -Administrador de propiedades.

Terminando

La capacidad de exportar membresías de grupos de Active Directory a archivos CSV proporciona una instantánea simplificada y organizada de su entorno de TI. Esta funcionalidad es invaluable para la auditoría periódica y ayuda a solucionar problemas, planificar y mantener una capa adicional de respaldo de datos.

Hemos analizado el uso práctico de los cmdlets ‘Get-ADGroupMember’ y ‘Export-Csv’ en PowerShell, lo que le permite exportar membresías de grupos de manera efectiva. También analizamos el manejo de excepciones para grupos de AD grandes, que se pueden abordar mediante una combinación de cmdlets ‘Get-ADGroup’ y ‘Get-ADUser’.

Sin embargo, al utilizar secuencias de comandos de PowerShell, puede introducir de manera efectiva la automatización en la combinación al administrar y recuperar usuarios en su entorno de Active Directory.

5/5 - (45 votos)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *