Encuentre objetos de computadora inactivos con LastLogonTimeStamp
De vez en cuando me encuentro reinventando este fragmento de código. ¿Quizás tú también?
El problema que quieres resolver es el siguiente:
¿Cómo se identifican objetos informáticos obsoletos en Active Directory para realizar algunas tareas de limpieza atrasadas?
Existen diferentes propiedades que pueden ayudarle a obtener esta información. Normalmente uso la siguiente propiedad:
lastLogonTimeStamp
Todos los sistemas operativos Windows unidos a un dominio tienen una cuenta y una contraseña en Active Directory, al igual que los usuarios (excepto que la contraseña de la cuenta de la computadora tiene 120 caracteres).
Para operar correctamente las cuentas de computadora, inicie sesión en el dominio tal como lo hacen los usuarios.
Cada vez que un usuario o computadora inicia sesión en Active Directory, el controlador de dominio de autenticación verificará el atributo lastLogonTimeStamp de la cuenta. Si el valor tiene más de 14 días, el atributo lastLogonTimeStamp se actualiza con la hora actual. La verificación de 14 días tiene como objetivo evitar la sobrecarga de la replicación de AD y está controlada por el atributo ms-DS-Logon-Time-Sync-Interval en el contexto de nombres de dominio.
Si el valor del atributo lastLogonTimeStamp tiene más de 14 días, es una indicación de que la cuenta ya no está activa.
Obtenga todos los detalles sobre lastLogonTimeStamp aquí.
Conversión de lastLogonTimeStamp de FileTime a DateTime
El valor de lastLogonTimeStamp parecerá un poco extraño a primera vista. Aquí está mi cumpleaños, por ejemplo:
116961336000000000
El formato del atributo es una estructura FileTime que mide el número de intervalos de 100 nanosegundos desde el 1 de enero de 1601 (hora UTC).
¡Por pura vergüenza no voy a convertir el valor anterior por ti! Pero le mostraré cómo convertir sus propiedades lastLogonTimeStamp en PowerShell. Muy simple:
[datetime]::FromFileTime($Server.lastLogonTimeStamp)Con la conversión realizada, echemos un vistazo a un script para obtener la lista completa de su Active Directory.
Cómo obtener todos los objetos informáticos obsoletos de Active Directory mediante PowerShell
Usando la información anterior, una solución PowerShell podría verse así:
$Servers = Get-ADComputer -Properties lastLogonTimeStamp -Filter * -ResultSetSize $null
"Name;DN;lastLogonTimeStamp" | Out-File ".\ServerList.txt"
ForEach ($Server In $Servers)
{
$Output = $Server.Name + ";" + $Server.distinguishedName + ";" + [datetime]::FromFileTime($Server.lastLogonTimeStamp)
Write-Host $Output
$Output | Out-File ".\ServerList.txt" -Append
}Esto le dará una bonita lista separada por punto y coma con el nombre, nombre distinguido y lastLogonTimeStamp de todos los objetos de la computadora en su Active Directory.
La lista se imprime en la consola y también se guarda en un archivo txt.
Luego puede pegar el resultado en Excel y realizar toda la clasificación y filtrado que desee.
Acelere la gestión de Office 365
Si tiene un AD híbrido con integración de Office 365, puede simplificar enormemente la administración de usuarios, buzones y licencias.
Instale la extensión Easy365Manager en la herramienta AD Users & Computers y administre todo en una herramienta consolidada y conocida. Sé el chico inteligente:

