Búsqueda de sitios web

Cómo bloquear, desbloquear, habilitar y deshabilitar cuentas AD con PowerShell


Las herramientas de administración de la GUI de Active Directory, como Usuarios y computadoras de Active Directory (ADUC), están bien para realizar operaciones en cuentas individuales. Pero cuando necesita trabajar con varias cuentas de AD, PowerShell es una herramienta más flexible. En esta publicación, le mostraré cómo usar PowerShell para bloquear, desbloquear, habilitar y deshabilitar cuentas de computadora y de usuario de AD individualmente y de forma masiva utilizando archivos delimitados por comas.

Antes de poder ejecutar los cmdlets de Active Directory PowerShell, debe tener el módulo Active Directory para PowerShell instalado en su computadora. Si está utilizando Windows 10, descargue las herramientas de administración remota del servidor (RSAT) para Windows 10 desde el sitio web de Microsoft aquí y luego instálelas. Luego habilite la función del módulo AD PowerShell abriendo un mensaje de PowerShell con privilegios de administrador local y ejecutando el cmdlet Enable-WindowsOptionalFeature como se muestra aquí:

Disable-ADAccount -Identity RussellS
  • Deshabilitar usuarios de un archivo CSV

También puede deshabilitar todas las cuentas de usuario de Active Directory enumeradas en un archivo de texto delimitado por comas (.csv). El archivo debe contener un encabezado y luego una lista de nombres de usuarios, uno en cada fila. Mi archivo CSV tiene solo una columna (con el encabezado "Nombre"), por lo que mi archivo delimitado por comas no tiene comas. Si su archivo CSV tiene más de una columna, el script simplemente ignorará esas columnas adicionales.

Empiezo importando el contenido del archivo CSV como un objeto ($users) y luego uso 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)
}

Para comprobar los resultados, utilice el cmdlet Search-ADAccount:

$computers=Import-CSV c:tempcomputers.csv
ForEach ($computer in $computers)
{
     Disable-ADAccount -Identity "$($computer.name)$"
}

Para comprobar los resultados, utilice el cmdlet Search-ADAccount:

$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 están activas desde el 3 de junio de 2018:

Search-ADAccount -UsersOnly -AccountInactive -DateTime ‘6/3/2018’ | Disable-ADAccount

Vale la pena señalar que debido a la forma en que Active Directory sincroniza el atributo LastLogOnDate, se devuelven resultados al especificar el parámetro -AccountInactive con Search -El cmdlet ADAccount puede tener una inexactitud de entre 9 y 14 días.

Como puede ver, administrar el estado de las cuentas de Active Directory con PowerShell es sencillo. Como PowerShell está 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 necesarias.

Artículos relacionados