¿Los usuarios en su organización alguna vez olvidan sus contraseñas? ¡Seguramente no! ¿Un usuario de Active Directory ha bloqueado su cuenta? ¡De ninguna manera! Veamos qué podemos hacer para encontrar usuarios bloqueados en Active Directory con PowerShell!
Deja de luchar con llamadas de restablecimiento de contraseñas y bloqueos de cuentas en Active Directory. Obtén una prueba GRATUITA de Specops uReset.
¿Alguna vez tu red ha sido infectada con malware que intenta autenticarse con tantas cuentas de usuario de dominio como sea posible? Espero que no, pero he visto que sucede varias veces. Los usuarios y los gusanos son solo dos de las razones por las que una o más cuentas de AD pueden bloquearse. Dependiendo de su política de contraseñas, los bloqueos pueden ocurrir a diario o solo ocasionalmente.
Independientemente de la razón o situación, los bloqueos de cuentas afectan a sus usuarios. Como dependen de su cuenta de dominio de Active Directory para casi todo, se darán cuenta de inmediato cuando esté bloqueada. El servicio de asistencia técnica puede volver a habilitar la cuenta, pero ¿qué pasa si vuelve a suceder? …y otra vez. …y otra vez. Descubrir la causa raíz de este problema es importante.
Una forma de hacer esto es usar PowerShell y el módulo ActiveDirectory. Al utilizar el cmdlet Search-AdAccount
dentro del módulo Active Directory, puedes rastrear fácilmente todas las cuentas que están actualmente bloqueadas en tu dominio.
Relacionado: Cómo instalar el módulo Active Directory PowerShell
Buscar usuarios bloqueados en Active Directory con PowerShell
Para buscar cuentas bloqueadas, puedes ejecutar el comando Search-AdAccount
utilizando el parámetro LockedOut
. Esto devolverá todos los usuarios actualmente bloqueados, siempre que tengas los permisos para verlos.
Este comando es excelente, pero ¿qué sucede si tienes una cuenta que se bloquea continuamente y necesitas averiguar desde qué sistema proviene? Esta es una tarea común cuando tienes una infección de malware en tu red o tal vez cuando tienes un administrador olvidadizo que olvidó cerrar sesión en una sesión de escritorio remoto. Eso nunca ha sucedido, ¿verdad?
Para encontrar la fuente de un bloqueo de Active Directory, primero debes asegurarte de estar consultando el controlador de dominio correcto. En este caso, este será el controlador de dominio con el rol de emulador de PDC.
Encontrar el titular del rol PDCe.
Toda la autenticación de contraseñas vendrá a este controlador de dominio que tiene el rol de PDCe, por lo que siempre es el mejor lugar para verificarlo. Para encontrar el controlador de dominio con el rol de PDCe, puedes revisar la propiedad \texttt{PDCEmulator} devuelta por el cmdlet \texttt{Get-ADDomain}.
Revisar el Registro de eventos en busca de bloqueos
Una vez que tengas el controlador de dominio con el rol de PDCe, necesitarás consultar el registro de eventos de seguridad (logs de seguridad) de este controlador de dominio para el evento ID 4740. El evento ID 4740 es el evento que se registra cada vez que se bloquea una cuenta. Haz esto con el cmdlet \texttt{Get-WinEvent}.
¡Estás mucho más cerca de encontrar a esos usuarios bloqueados en Active Directory con PowerShell!
Análisis del nombre de usuario y ubicación
Esto devolverá todos los eventos de bloqueo, pero no muestra de inmediato los nombres de usuario y las computadoras en las que se realizó el bloqueo. Para encontrar el nombre de usuario, deberás profundizar un poco más en una propiedad que \texttt{Get-WinEvent} devuelve llamada \texttt{Properties}.
Puedes ver que he trasladado el filtro de la tabla hash para evitar el desbordamiento de código y, lo que es más importante, he utilizado las propiedades calculadas de \texttt{Select-Object} para extraer el nombre de usuario y el nombre de la computadora de la propiedad \texttt{Properties}. En cada uno de estos eventos, el nombre de usuario que fue bloqueado es siempre el primer elemento en la matriz \texttt{Properties}, mientras que el segundo elemento es siempre el nombre de la computadora donde se realizó el bloqueo.
Aprovechar PowerShell para desbloquear cuentas de Active Directory
Ahora que has encontrado a tus usuarios bloqueados en AD, ¿cómo desbloqueas las cuentas? El módulo ActiveDirectory
en PowerShell ofrece el comando Unlock-ADAccount
que permite desbloquear rápidamente a un cliente para que vuelva a trabajar. Como se muestra a continuación, usa PowerShell para desbloquear las cuentas de AD. Este comando funciona tanto en Windows PowerShell como en PowerShell 7, una vez cargado a través del módulo ActiveDirectory
.
Tal vez estás buscando desbloquear todos los usuarios bloqueados a la vez, usa el comando Search-ADAccount
con el parámetro -LockedOut
y redirige los resultados al comando Unlock-ADAccount
, como se muestra a continuación.
Reduce las llamadas al servicio de asistencia y actualiza las credenciales en la caché para usuarios remotos incluso sin VPN con una solución de restablecimiento de contraseña de autoservicio. ¡Obtén una demostración de Specops uReset!
Resumen

Hasta ahora, deberías poder identificar rápidamente todas las cuentas que están actualmente bloqueadas en tu dominio y ver un historial de todos los bloqueos de cuentas. Ahora es el momento de tener una seria conversación con Joe sobre dejar esas sesiones de RDP abiertas…
Source:
https://adamtheautomator.com/find-locked-out-users-in-active-directory-powershell/