Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Cómo bloquear, desbloquear, habilitar y deshabilitar cuentas de AD con PowerShell

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.

Image

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.

Compartir en

Aprende más

Acerca del autor

Asset Not Found

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).