PowerShell es cada vez más la herramienta preferida por los administradores de Windows. El módulo PowerShell de Active Directory incluye más de 450 cmdlets que se pueden usar para recopilar información sobre todos los objetos de Active Directory, comprobar el estado de los controladores de dominio, recopilar información de GPO y mucho más.
Este artículo detalla cómo puede usar PowerShell para encontrar cuentas de usuario y equipo deshabilitadas e inactivas en los dominios de Active Directory.
Requisitos previos
Para usar los scripts proporcionados aquí, debe:
- Instale el módulo PowerShell de Active Directory en la máquina donde ejecutará el script. Ese equipo debe ejecutar Windows Server 2012 o posterior.
- Abra la ventana de PowerShell en modo elevado.
- Ejecute el script con credenciales que tienen permiso para acceder a todos los dominios de Active Directory en los que recopila datos.
Comprobación de un solo dominio
Si necesita comprobar si una cuenta de usuario o equipo en particular está deshabilitada o inactiva, puede hacerlo manualmente mediante el complemento Usuarios y equipos de Active Directory (o ADUC). Sin embargo, si necesita identificar cuentas deshabilitadas e inactivas en un dominio, lo mejor es automatizar la tarea con PowerShell.
Por ejemplo, para recopilar cuentas de equipo deshabilitadas, puede usar el cmdlet Get-ADComputer para buscar cuentas de equipo que tengan la propiedad Habilitada establecida en False False, lo 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 sola cuenta de usuario está deshabilitada
- Obtenga una lista de usuarios deshabilitados
- Buscar cuentas de equipo inactivas
- Buscar cuentas de usuario inactivas
Comprobación en varios dominios
Si desea recopilar información de varios dominios de Active Directory, necesita un script de PowerShell que pueda recorrer en bucle cada dominio del 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 proporcionado a continuación, asegúrese de:
- Crear un directorio con el nombre «C:\Temp» en el equipo local para almacenar los archivos CSV.
- Sustitúyase «enterprise.com» en la variable Cur CurForestName con el nombre de su bosque.
Script de ejemplo
$DomList = "C:\Temp\DomList.TXT"remove-item $DomList -ErrorAction SilentlyContinue$CurForestName="enterprise.com"$GetForest=Get-ADForest $CurForestName$Items = $R.DomainsForEach ($Domains in $Items){ Add-Content $DomList $Domain.Name}Write-Host "Starting Script..."ForEach ($DomInFile in $DomList){ $DisabledCompsCSV = "C:\Temp\DisabledAccounts_Computers_"+$DomInFile+".CSV" Remove-item $DisabledCompsCSV -ErrorAction SilentlyContinue $DisabledUsersCSV = "C:\Temp\DisabledAccounts_Users_"+$DomInFile+".CSV" Remove-item $DisabledUsersCSV -ErrorAction SilentlyContinue $InActiveUsersReport = "C:\Temp\InactiveUsers_"+$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"
Compartir los informes
Una vez que se generen los informes CSV, puede enviar el archivo apropiado a cada equipo de TI por correo electrónico. Como alternativa, puede incrustar el cmdlet Send-MailMessage en el script para que el script envíe esos correos electrónicos automáticamente. Discutiremos 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 comprobar manualmente las cuentas deshabilitadas e inactivas, todavía requiere mucho trabajo crear, mantener y ejecutar scripts. Si eres una persona ocupada, considera buscar herramientas que automaticen el trabajo y te ahorren tiempo. Por ejemplo, armado con el Rastreador de Usuarios Inactivos gratuito, podrá limpiar o bloquear rápidamente todas sus cuentas de usuario obsoletas. Y una solución robusta como Netwrix Auditor para Active Directory le permitirá informar sobre el estado de la cuenta en unos pocos clics, así como automatizar la auditoría, descubrir puntos débiles de seguridad y agilizar las investigaciones de incidentes.