Ver el número de usuarios y grupos de Active Directory con Powershell
Con el objetivo de realizar auditorías de seguridad programadas, así como para hacer limpieza o tareas administrativas, podría resultar necesario conocer el número total de cuentas de usuario presentes en Directorio Activo, cuantas están deshabilitadas o su segmentación por departamentos u OUs (Organizational Units)
Directorio Activo de Microsoft Windows es un rol que se puede añadir a cualquier edición de Windows un directory server (servidor de directorio) en el que dar de altas usuarios para control de accesos a recursos corporativos, auditoría de recursos e implementación de políticas.
Por supuesto, podemos abrir la interfaz gráfica de turno y ponernos a contar el número a mano, pero en corporaciones grandes esto no será viable, dado que podríamos tardar siglos y cometer errores.
Consultar total de usuarios en Active Directory usando Powershell
Prerequisitos
Lo primero es importar el módulo de Active Directory:
Import-Module ActiveDirectory
A continuación tenéis algunos ejemplos que nos permitirán realizar un conteo del total de usuarios y grupos existentes en Directorio Activo de Windows Server.
Total de cuentas de usuario en AD
Emplearemos el siguiente comando, tal cual aparece, tras abrir una ventana de Powershell:
(Get-ADUser -filter *).count
Total de cuentas de usuario en una OU
Para obtener el número de cuentas existentes dentro de una Organizational Unit (no confundir con un grupo) teclearemos lo siguiente:
(Get-ADUser -Filter * -SearchBase "ou=<nuestra_ou>,dc=<dominio1>,dc=<dominio2>").count
Modificaremos los valores en rojo. Ejemplo:
(Get-ADUser -Filter * -SearchBase “ou=Usuarios,ou=GBS,dc=adgbs,dc=com”).count
También podemos utilizar la siguiente consulta:
(get-aduser -filter {memberof -recursivematch "CN=Gupo,OU=<nuestra_ou>,DC=<dominio1>,DC=<dominio2>"}).count
Total de cuentas de usuario dentro de un grupo
Para obtener el total de cuentas de usuario en un grupo de Active Directory escribiremos lo siguiente, modificando el valor en rojo por el que corresponda en nuestro caso:
(Get-ADGroupMember -Identity "Nombre_grupo").count
Otras opciones que podemos utilizar:
(Get-ADGroup Nombre_grupo -Properties *).member.count
Total de grupos existentes en Directorio Activo
Si lo que buscamos no es el total de usuarios sino de grupos, escribiremos la siguiente consulta:
(Get-ADGroup -Filter * -SearchBase "ou=<nuestra_ou>,dc=<dominio1>,dc=<dominio2>").count
Quedaría de la siguiente forma en un ejemplo práctico:
(Get-ADGroup -Filter * -SearchBase “ou=Usuarios,ou=OU1,dc=redactado,dc=com”).count
Te puede interesar – Auditoría de contraseñas en Directorio Activo con Weak Password Test
Uso de filtros
Total de usuarios habilitados o deshabilitados en Directorio Activo
También podemos aplicar un filtro más específico para, por ejemplo, obtener el total de cuentas según su estado.
Si queremos el total de cuentas habilitadas, usaremos:
(Get-AdUser -filter * |Where {$_.enabled -eq "True"}).count
Para hacer lo propio con los usuarios deshabilitados:
(Get-ADUser -filter * |Where {$_.enabled -ne "False"}).count
Siguiendo otro de los ejemplos anteriores, podríamos filtrarlo de la siguiente forma para obtener los usuarios dentro de una ruta concreta en base a su grupo y fecha de caducidad de cuenta.
(get-aduser -properties AccountExpirationDate -filter {memberof -recursivematch "ou=<nuestra_ou>,dc=<dominio1>,dc=<dominio2>"} | where {$_.AccountExpirationDate -ne $null}).count
Espero que os haya servido de ayuda y ya sabéis, si os ha gustado compartidlo con vuestros amigos 😉
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.
Excelente post, gracias por compartir.