En este artículo, veremos algunos ejemplos del uso de PowerShell para extraer miembros del grupo de diferentes Grupos de directorio activo. Este artículo debería enseñarle cómo crear una lista de cuentas en un grupo específico de Active Directory y exportarlo a un archivo CSV, que es conveniente para procesar en MS Excel y otros programas de Office.
Anteriormente, para crear una lista de usuarios en el grupo de Active Directory, tenía que usar secuencias de comandos VBS o utilidades de línea de comandos DSQuery o CSVDE, que no eran lo suficientemente flexibles y convenientes.
Para interactuar con Active Directory desde PowerShell, Microsoft desarrolló un módulo especial — Módulo de Directorio Activo para Windows PowerShell. Por primera vez este módulo apareció en Windows Server 2008 R2 y para usarlo primero debe cargarlo en su 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 (Active Directory Domain Services) se instala en el servidor cuando el servidor está promovido a un controlador de dominio. En los sistemas operativos de escritorio (Windows 10/Windows 7), el módulo Active Directory para Windows PowerShell se incluye en el Herramientas de administración remota del servidorque debe descargar, instalar y habilitar por separado.
Tenga en cuenta que para usar el módulo de Active Directory, no necesita ser miembro del grupo de administradores de dominio, cualquier usuario de dominio autenticado puede obtener información sobre los usuarios y grupos de Active Directory usando el módulo AD PowerShell.
Para obtener información sobre las cuentas de usuario que se incluyen en el grupo de seguridad de Active Directory, use 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’
Si no sabe 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
Si el grupo especificado contiene otros grupos de Active Directory, debe utilizar el recursivo parámetro para enumerar los miembros de Active Directory en función de los grupos anidados.
Get-ADGroupMember -Identity ‘Domain Admins’ -Recursive | ft name
El modificador -recursivo le indica al comando Get-ADGroupMember que analice cada grupo anidado y muestre solo los objetos que no son contenedores (usuario o computadora). Este comando mostrará incluso aquellos usuarios que no pertenecen directamente al grupo especificado.
Puede mostrar información más detallada sobre las cuentas en este grupo de esta manera:
Get-ADGroupMember -Identity ‘Domain Admins’ | foreach { Get-ADUser $_ -Properties * }
Puede usar 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, el departamento y el puesto, seguido de la clasificación y agrupación 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
Para extraer miembros del grupo de Active Directory en un archivo de texto, agregue el siguiente comando:
| Out-File -Width 5000 "C:PSADGroupUsersByCompany.txt"
Para exportar la lista al CSV csv, agregue la siguiente canalización:
| Export-Csv -NoTypeInformation .ADGroupUsersByCompany.csv -Encoding Unicode
Puede 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 de AD que contengan la palabra clave *Admin* en el nombre y mostrar los usuarios que se agregan a estos grupos. Para mostrar solo objetos únicos, use el argumento -uniq:
Get-ADGroup -filter 'SamAccountName -like "*Admin*"' | Get-ADGroupMember -recursive|Select-Object -uniq
En algunos casos, puede enfrentar 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 extranjeros). El cmdlet Get-ADGroupMember no admite trabajar con usuarios de diferentes bosques en Active Directory.