Cómo bloquear, desbloquear, habilitar y deshabilitar cuentas de AD con PowerShell
Jul 30, 2018
The Active Directory GUI management tools, like Active Directory Users and Computers (ADUC), are fine for performing operations against single accounts. But when you need to deal with multiple AD accounts, PowerShell is a more flexible tool. In this post, I’ll show you how to use PowerShell to lock, unlock, enable and disable AD user and computer accounts individually and in bulk using comma-delimited files.
Antes de poder ejecutar los cmdlets de PowerShell de Active Directory, debes tener instalado el módulo de Active Directory para PowerShell en tu computadora. Si estás utilizando Windows 10, descarga las Herramientas de administración remota del servidor (RSAT) para Windows 10 desde el sitio web de Microsoft here y luego instálalas. Después, habilita la característica del módulo de PowerShell de AD abriendo una consola de PowerShell con privilegios de administrador local y ejecutando el cmdlet Enable-WindowsOptionalFeature como se muestra aquí:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Opcionalmente, también puede actualizar los archivos de ayuda utilizando el cmdlet Update-Help:
Update-Help -Module ActiveDirectory -Verbose -Force
Asegúrese de cerrar el símbolo del sistema de PowerShell, ya que no necesitará los privilegios elevados para nada más. Las instrucciones a continuación se pueden ejecutar en el contexto de seguridad de cualquier usuario que tenga permisos para realizar operaciones de cuentas de usuario en Active Directory, como desbloquear cuentas de usuario y habilitar y deshabilitar cuentas de usuario, computadora y servicio.
Cómo encontrar cuentas de Active Directory bloqueadas
No puedes bloquear cuentas de Active Directory usando PowerShell o la GUI; de hecho, no hay razón por la que querrías hacer eso. Pero puedes buscar cuentas de usuario bloqueadas con la ayuda del cmdlet Search-ADAccount. Aquí canalizo los resultados del cmdlet Search-ADAccount al cmdlet Select-Object para mostrar solo los atributos Name y SamAccountName de cada cuenta bloqueada:
Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName
Cómo desbloquear cuentas de Active Directory
Puede desbloquear fácilmente cuentas de usuario utilizando el cmdlet Unlock-ADAccount. Utilice el parámetro -Identity para especificar qué cuenta desbloquear; puede proporcionar su nombre distinguido, identificador de seguridad (SID), identificador único global (GUID) o nombre de cuenta del Administrador de Cuentas de Seguridad (SAM). Aquí estoy desbloqueando la cuenta de RussellS:
Unlock-ADAccount -Identity RussellS
Cómo habilitar cuentas de Active Directory
Si un objeto de cuenta ha sido deshabilitado por cualquier motivo, puede habilitarlo utilizando el cmdlet Enable-ADAccount:
Enable-ADAccount -Identity RussellS
Cómo deshabilitar cuentas de Active Directory
De manera similar, el cmdlet Disable-ADAccount se utiliza para deshabilitar cuentas de AD:
Disable-ADAccount -Identity RussellS
Deshabilitar usuarios desde un archivo CSV
También puede deshabilitar todas las cuentas de usuario de Active Directory que estén listadas en un archivo de texto delimitado por comas (.csv). El archivo debe contener un encabezado y luego una lista de nombres de usuario, uno en cada fila. Mi archivo CSV solo tiene una columna (con el encabezado “Name”), ¡así que mi archivo delimitado por comas no tiene comas! Si su archivo CSV tiene más de una columna, esas columnas adicionales simplemente serán ignoradas por el script.
Comienzo importando el contenido del archivo CSV como un objeto ($users), y luego utilizo un bucle ForEach para deshabilitar al usuario en cada línea del archivo de texto. Aquí está el script de PowerShell:
$users=Import-CSV c:tempusers.csv
ForEach ($user in $users)
{
Disable-ADAccount -Identity $($user.name)
}
Gestione cuentas de AD con Netwrix Directory Manager
Deshabilitar cuentas de computadora desde un archivo CSV
El script de PowerShell para deshabilitar cuentas de computadora listadas en un archivo CSV es casi idéntico. La principal diferencia es que tengo que agregar un signo de dólar ($) al final del valor del parámetro -Identity para indicar que quiero deshabilitar un objeto de computadora y no un objeto de cuenta de usuario. También cambio los nombres de las variables y archivos para que sean más apropiados para cuentas de computadora.
Aquí está el guion:
$computers=Import-CSV c:tempcomputers.csv
ForEach ($computer in $computers)
{
Disable-ADAccount -Identity "$($computer.name)$"
}
Para verificar los resultados, utilice el cmdlet Search-ADAccount:
Search-ADAccount –AccountDisabled –ComputersOnly | Select-Object Name, SamAccountName
Deshabilitando usuarios inactivos
Los cmdlets Search-ADAccount y Disable-ADAccount se pueden utilizar juntos para deshabilitar cuentas de usuario inactivas. Daré dos ejemplos. Primero, crearé un nuevo objeto de intervalo de tiempo ($timespan) y lo configuraré a noventa días, y luego lo usaré como el valor del parámetro -TimeSpan para deshabilitar cuentas que no han estado activas durante los últimos tres meses. El parámetro -AccountInactive requiere que el nivel funcional del dominio sea Windows Server 2003 o superior.
$timespan = New-Timespan -Days 90
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | Disable-ADAccount
Otra opción es utilizar el parámetro -DateTime para devolver cuentas que han estado inactivas desde una fecha determinada. Este script deshabilita todas las cuentas que no han estado activas desde el 3 de junio de 2018:
Search-ADAccount -UsersOnly -AccountInactive -DateTime ‘6/3/2018’ | Disable-ADAccount
Es importante señalar que debido a la forma en que Active Directory sincroniza el atributo LastLogOnDate, los resultados obtenidos al especificar el parámetro –AccountInactive con el cmdlet Search-ADAccount pueden ser inexactos por un margen de hasta 9–14 días.
Como puede ver, administrar el estado de las cuentas de Active Directory con PowerShell es sencillo. Debido a que PowerShell es orientado a objetos, es fácil crear objetos que contengan los datos que desea procesar y luego pasarlos a otros cmdlets que realizan las acciones requeridas.
Contenido relacionado seleccionado:
Compartir en
Aprende más
Acerca del autor
Russell Smith
Consultor de TI
Consultor de TI y autor especializado en tecnologías de gestión y seguridad. Russell tiene más de 15 años de experiencia en TI, ha escrito un libro sobre seguridad en Windows y ha coescrito un texto para la serie de Cursos Académicos Oficiales de Microsoft (MOAC).
Aprende más sobre este tema
Leyes de Privacidad de Datos por Estado: Diferentes Enfoques para la Protección de la Privacidad
Ejemplo de Análisis de Riesgos: Cómo Evaluar los Riesgos
El Triángulo de la CIA y su Aplicación en el Mundo Real
¿Qué es la gestión de registros electrónicos?
Análisis Cuantitativo de Riesgo: Expectativa de Pérdida Anual