Búsqueda de sitios web

Encontrar cuentas deshabilitadas e inactivas en AD


PowerShell es cada vez más la herramienta elegida por los administradores de Windows. El módulo Active Directory PowerShell incluye más de 450 cmdlets que puede usar para recopilar información sobre cada objeto en Active Directory, verificar el estado de los controladores de dominio, recopilar información de GPO y más.

Este artículo detalla cómo puede usar PowerShell para encontrar cuentas de computadora y de usuario deshabilitadas e inactivas en sus dominios de Active Directory.

Requisitos previos

Para utilizar los scripts proporcionados aquí, debe:

  • Instale el módulo PowerShell de Active Directory en la máquina donde ejecutará el script. Esa computadora debe ejecutar Windows Server 2012 o posterior.
  • Abra la ventana de PowerShell en modo elevado.
  • Ejecute el script utilizando credenciales que tengan permiso para acceder a todos los dominios de Active Directory donde está recopilando datos.

Comprobación de un único dominio

Si necesita verificar si un usuario o cuenta de computadora en particular está deshabilitado o inactivo, puede hacerlo manualmente usando el complemento Usuarios y computadoras de Active Directory (o ADUC). Sin embargo, si necesita identificar cuentas deshabilitadas e inactivas en un dominio, es mejor automatizar la tarea usando PowerShell.

Por ejemplo, para recopilar cuentas de computadora deshabilitadas, puede usar el cmdlet Get-ADComputer para buscar cuentas de computadora que tengan la propiedad Enabled establecida en $False., que indica que la cuenta está deshabilitada:

Get-ADComputer -Filter {(Enabled -eq $False)} -ResultPageSize 2000 -ResultSetSize $null -Server <AnyDomainController> -Properties Name, OperatingSystem

Aquí hay scripts para tareas relacionadas:

  • Compruebe si una cuenta de usuario único está deshabilitada
  • Obtener una lista de usuarios discapacitados
  • Encuentra cuentas de computadora inactivas
  • Encuentra cuentas de usuarios inactivos

Comprobación en varios dominios

Si desea recopilar información de varios dominios de Active Directory, necesita un script de PowerShell que pueda recorrer cada dominio en su bosque de Active Directory y almacenar los datos recopilados para cada dominio en un archivo CSV separado para el equipo de TI responsable de ese dominio.

Antes de ejecutar el script que se proporciona a continuación, asegúrese de:

  • Cree un directorio con el nombre "C:Temp" en la computadora local para almacenar los archivos CSV.
  • Reemplace “enterprise.com” en la variable $CurForestName con el nombre de su bosque.

Guión de muestra

$DomList = "C:TempDomList.TXT"
remove-item $DomList -ErrorAction SilentlyContinue
$CurForestName="enterprise.com"
$GetForest=Get-ADForest $CurForestName
$Items = $R.Domains
ForEach ($Domains in $Items)
{
    Add-Content $DomList $Domain.Name
}
Write-Host "Starting Script..."
ForEach ($DomInFile in $DomList)
{    $DisabledCompsCSV = "C:TempDisabledAccounts_Computers_"+$DomInFile+".CSV"
    Remove-item $DisabledCompsCSV -ErrorAction SilentlyContinue
    $DisabledUsersCSV = "C:TempDisabledAccounts_Users_"+$DomInFile+".CSV"
    Remove-item $DisabledUsersCSV -ErrorAction SilentlyContinue
    $InActiveUsersReport = "C:TempInactiveUsers_"+$DomInFile+".CSV"
    Remove-item $InActiveUsersReport -ErrorAction SilentlyContinue
    Get-ADComputer -Server $DomInFile –Filter {(Enabled –eq $False)} –ResultPageSize 2000 –ResultSetSize $null -Properties Name, OperatingSystem | Export-CSV $DisabledCompsCSV -NoTypeInformation   
    Search-ADAccount -Server $DomInFile –AccountDisabled –UsersOnly –ResultPageSize 2000 –ResultSetSize $null | Select-Object SamAccountName, DistinguishedName | Export-CSV $DisabledUsersCSV –NoTypeInformation   
    Search-ADAccount -Server $DomInFile –AccountInActive –TimeSpan 90:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV $InActiveUsersReport –NoTypeInformation}
Write-Host "Script Finished collecting required information. Please check report files under C:Temp folder"

Compartiendo los informes

Una vez generados los informes CSV, puede enviar el archivo apropiado a cada equipo de TI por correo electrónico. Alternativamente, puede incrustar el cmdlet Send-MailMessage en el script para que el script envíe esos correos electrónicos automáticamente. Analizaremos este cmdlet en un próximo artículo de esta serie.

Cómo puede ayudar Netwrix

Aunque usar PowerShell es mucho más rápido que verificar manualmente cuentas deshabilitadas e inactivas, todavía requiere mucho trabajo crear, mantener y ejecutar scripts. Si es una persona ocupada, considere buscar herramientas que automaticen el trabajo y le ahorren tiempo. Por ejemplo, si cuenta con el rastreador de usuarios inactivos gratuito, podrá limpiar o bloquear rápidamente todas sus cuentas de usuario obsoletas. Y una solución sólida como Netwrix Auditor para Active Directory le permitirá informar sobre el estado de la cuenta con sólo unos pocos clics, así como automatizar auditorías, descubrir puntos débiles de seguridad y agilizar las investigaciones de incidentes.

Artículos relacionados