Una tarea frecuente de un administrador de Active Directory es hacer una lista de cuentas de usuario y / o computadora deshabilitadas o inactivas. Puede usar tanto las consultas LDAP guardadas en la consola ADUC como los cmdlets de PowerShell para obtener una lista de objetos inactivos en un dominio de Active Directory. En este artículo, le mostraremos cómo usar PowerShell para encontrar cuentas inactivas de usuarios y computadoras.

El administrador de Active Directory debe deshabilitar y eliminar periódicamente las computadoras y las cuentas de usuario que no se utilicen. Esto reducirá el tamaño de la base de datos de AD (archivo ntds.dit) y también reducirá el riesgo de que un atacante o ex empleados utilicen cuentas antiguas para acceder al dominio.

Para usar todos los cmdlets de PowerShell que se describen a continuación, al menos PowerShell versión 3.0 y el Kit de herramientas de administración remota del servidor (RSAT) debe estar instalado en la computadora. Habilite el módulo de Active Directory para Windows PowerShell desde RSAT (Panel de control -> Programas-> Activar y desactivar características de Windows-> Herramientas de administración de servidor remoto -> Herramientas de administración de roles -> Herramientas de AD DS y AD LDS).

Este módulo de PowerShell también se puede habilitar usando este comando:

Add-WindowsFeature RSAT-AD-PowerShell

Inicie la consola de PowerShell e importe el módulo Active Directory para PowerShell:

Import-Module ActiveDirectory

¿Cómo encontrar equipos inactivos (antiguos) en el dominio de Active Directory?

Puede usar el cmdlet Get-ADComputer para buscar objetos de equipo inactivos en un dominio. La LastLogonTimeStamp El atributo se puede utilizar como criterio de búsqueda. Tenga en cuenta que este atributo no se puede utilizar para recuperar información en tiempo real sobre la última vez que una computadora inició sesión en el dominio. Sin embargo, debido al hecho de que este atributo se replica entre los controladores de dominio cada 9-14 días, puede obtener información sobre la última hora de inicio de sesión del equipo desde cualquier controlador de dominio LastLogonDate atributo, que se actualiza solo en el DC a través del cual la computadora inició sesión).

Puede verificar el valor actual del atributo LastLogonTimeStamp en las propiedades de la computadora en la consola ADUC en la pestaña Editor de atributos.

Atributo LastLogonTimeStamp en las propiedades de la cuenta del directorio activo

Utilice los siguientes comandos para buscar todos los equipos de una unidad organizativa específica que no hayan iniciado sesión durante más de 180 días:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADComputer -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate }  -SearchBase ‘OU=Computers,OU=Mun,DC=woshub,dc=com’| Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize | Export-CSV c:psinactive_computers.csv

get-adcomputer: busque equipos inactivos por atributo lastlogontimestamp

Este comando generará un archivo CSV con una lista de equipos inactivos que no se han registrado en el dominio durante más de seis meses.

Puede deshabilitar las cuentas de computadora encontradas:

Get-ADComputer -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate }  -SearchBase ‘OU=Computers,OU=Mun,dc=woshub,dc=com’| Disable-ADAccount

Mueva estos objetos de la computadora a una unidad organizativa separada:

Get-ADComputer ... | Move-ADObject -TargetPath “OU=Disabled Computers,DC=woshub,DC=com”

O elimine las computadoras inactivas:

Get-ADComputer ... | Remove-ADComputer

Buscar cuentas de usuario inactivas en Active Directory

También puede utilizar el lastLogonTimeStamp atributo para encontrar cuentas de usuario inactivas. Para crear una lista de usuarios inactivos, debe utilizar este atributo y no lastLogon (el atributo lastLogon no se replica entre controladores de dominio).

La siguiente secuencia de comandos permite seleccionar cuentas de usuario habilitadas que no han iniciado sesión en el dominio durante más de seis meses (180 días) mediante el cmdlet Get-ADUser:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate }  -SearchBase ‘OU=Users,OU=Mun,dc=woshub,dc=com’| ?{$_.Enabled –eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize | Export-CSV c:psinactive_users.csv

enumerar los usuarios de anuncios inactivos con powershell

Puede deshabilitar a los usuarios inactivos:

Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate }  -SearchBase ‘OU=Users,OU=Mun,dc=woshub,dc=com’| Disable-ADAccount

Si necesita eliminar cuentas de usuario inactivas de AD, use la canalización con Remove-ADUser.

Uso de Search-ADAccount para encontrar objetos AD inactivos

Puede usar los cmdlets Get-ADUser, Get-ADComputer o Get-ADObject para buscar objetos inactivos en AD. Sin embargo, crear el filtro correcto para estos comandos puede resultar complicado. El módulo ActiveDirectory PowerShell tiene un cmdlet más conveniente para realizar estas tareas: Búsqueda-ADAccount. Este cmdlet se usa para buscar objetos de cualquier tipo (tanto usuarios como equipos). Veamos ejemplos del uso del cmdlet Search-ADAccount para tareas típicas de búsqueda de objetos deshabilitados, inactivos y bloqueados en AD.

Aquí está la lista de las claves más importantes del cmdlet Search-ADAccount:

Búsqueda-ADAccount Key Descripción
-AccountDisabled Búsqueda de cuentas deshabilitadas
-AccountExpired Búsqueda de cuentas caducadas
-AccountExpiring [-DateTime DateTime] [-TimeSpan TimeSpan] Búsqueda de las cuentas a caducar en un período de tiempo determinado (-TimeSpan) o en una fecha específica (-DateTime)
-AccountInactive [-DateTime DateTime] [-TimeSpan TimeSpan] Búsqueda de las cuentas que no han iniciado sesión desde una fecha determinada (-DateTime) o durante un período de tiempo determinado (-TimeSpan)
-LockedOut Búsqueda de las cuentas bloqueadas por la política de contraseñas de dominio.
-PasswordExpired Búsqueda de las cuentas con las contraseñas caducadas
-PasswordNeverExpires Cuentas con el conjunto de atributos PasswordNeverExpires (Control de cuentas del usuario atributo)

Nota. De forma predeterminada, el cmdlet Search-ADAccount busca cuentas de usuario y de equipo al mismo tiempo. Para buscar solo usuarios o equipos, debe utilizar una de las siguientes claves: Solo computadoras o UsersOnly.

Por ejemplo, mostremos la lista de cuentas de usuario deshabilitadas en el dominio:

Search-ADAccount -UsersOnly –AccountDisabled

Puede limitar el alcance de la búsqueda a un contenedor de Active Directory (OU) específico:

Search-ADAccount -UsersOnly –AccountDisabled –searchbase "OU=Admins,OU=Accounts,DC=woshub,DC=com"

enumerar la cuenta deshabilitada en AD usando Search-ADAccount

Los mismos datos se pueden presentar en una forma de tabla más conveniente usando este comando:

Search-ADAccount -UsersOnly -AccountDisabled -searchbase "OU=Admins,OU=Accounts,DC=woshub,DC=com"|ft -AutoSize

Si necesita obtener la lista de usuarios discapacitados que contiene ciertos atributos de usuario y presentarla como una tabla gráfica para ordenar, ejecute lo siguiente:

Search-ADAccount -UsersOnly AccountDisabled |sort LastLogonDate | Select Name,LastLogonDate,DistinguishedName |out-gridview -title "Disabled Users"

Buscar-ADAccount fuera de la vista de cuadrícula

La lista de cuentas de usuario bloqueadas:

Search-ADAccount -UsersOnly –LockedOut

La lista de cuentas de usuario que han estado inactivas en los últimos 60 días:

$timespan = New-Timespan –Days 60
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | ?{$_.Enabled –eq $True}

Para contar estas cuentas de usuario:

Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | ?{$_.Enabled –eq $True} | Measure

La lista de equipos no registrados en la red de dominio durante los últimos 90 días:

Search-ADAccount -AccountInactive –ComputersOnly -TimeSpan 90

O desde cierta fecha:

Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2021’|Select Name,LastLogonDate| ft

Lista de cuentas de ADAccount Equipos inactivos en el dominio

Para exportar la lista de objetos a un CSV, use este comando:

Search-ADAccount -AccountDisabled -UsersOnly| Export-Csv "c:psdisabled_users.csv"

Recomendado para ti

Bestseller No. 3
The Office
  • Amazon Prime Video (Video on Demand)
  • Steve Carell, Rainn Wilson, John Krasinski (Actors)
  • Bryan Gordon (Director)