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.
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
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
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"
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"
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
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
- Amazon Prime Video (Video on Demand)
- Steve Carell, Rainn Wilson, John Krasinski (Actors)
- Bryan Gordon (Director)