¿Cómo encontrar la última hora de inicio de sesión del usuario/computadora de Active Directory? – 2xsoftware

El administrador de Active Directory debe buscar y deshabilitar periódicamente los objetos inactivos en AD. En este artículo, mostraremos cómo obtener la última hora de inicio de sesión para el usuario del dominio de AD y encontrar cuentas que han estado inactivas durante más de 90 días.

[ez-toc]

¿Cómo obtener la última hora de inicio de sesión de un usuario usando ADUC?

Puede encontrar la última hora de inicio de sesión del usuario del dominio con la consola gráfica del complemento de Active Directory (ADUC) (Usuarios y equipos de Active Directory):

  1. Ejecute la consola dsa.msc;
  2. En el menú superior, habilite la opción Ver > Funciones avanzadas;
  3. Busque el usuario en el árbol de AD y abra sus propiedades;
  4. Haga clic en la pestaña Editor de atributos;
  5. En la lista de atributos, busque lastLogon. Este atributo contiene la hora en que el usuario inició sesión por última vez en el dominio.
    get-aduser última computadora de inicio de sesión

Nota. Puede ver dos atributos similares en la captura de pantalla anterior: último inicio de sesión y lastLogonTimestamp. ¿Cual es la diferencia entre ellos?

  • último inicio de sesión El atributo se actualiza cuando el usuario inicia sesión en el dominio. Pero solo cambia en el controlador de dominio que autenticó al usuario y es no replicado a otros controladores de dominio. Por lo tanto, si hay varios controladores de dominio en diferentes sitios y subredes de Active Directory, deberá verificar este atributo en cada uno de ellos y luego comparar los datos resultantes. El valor de este atributo en diferentes DC para el usuario puede ser diferente o incluso cero (si el usuario nunca se ha autenticado en este DC);
  • lastLogonTimeStamp El atributo también cambia cuando el usuario inicia sesión en el controlador de dominio y se replica en otros DC. Sin embargo, la replicación de este atributo lleva mucho tiempo (este atributo se replica solo si su valor es de 14 días o más que el anterior). Por lo tanto, los datos de este atributo en un DC específico pueden no ser relevantes.

A partir de la versión del esquema de AD (verifique si necesita actualizar el esquema de Active Directory) en Windows Server 2008 (Versión del objeto del esquema de AD = 44), puede usar varios atributos alternativos relacionados con el inicio de sesión:

  • msDS-LastFailedInteractiveLogonTime — hora del último intento fallido de inicio de sesión;
  • msDS-LastSuccessfulInteractiveLogonTime — la hora del último intento de inicio de sesión exitoso.

Estos atributos normalmente se replican entre los controladores de dominio de AD y se pueden usar para realizar un seguimiento de los intentos de inicio de sesión interactivos del usuario. Sin embargo, están habilitados de forma predeterminada (no recopilan ningún dato sobre las propiedades del usuario).

Para habilitar estos atributos, debe habilitar la opción GPO Proporcionar información sobre inicios de sesión anteriores a los equipos cliente para controladores de dominio (Configuración del equipo > Plantillas administrativas > Sistema > KDC). Cree un GPO con este parámetro y asígnelo al contenedor de controladores de dominio.

último inicio de sesión de la computadora del directorio activo

Puede usar la consulta LDAP para mostrar una lista de usuarios que no han iniciado sesión en el dominio durante mucho tiempo en la consola gráfica de Active Directory.

  1. Primero, debe convertir la fecha que necesita al formato ToFileTime. Por ejemplo, si desea encontrar usuarios que no hayan iniciado sesión en un dominio durante más de 90 días, puede obtener el valor de esa fecha con un simple comando de PowerShell:
    (Get-Date).AddDays(-90).ToFileTime()
  2. En nuestro ejemplo, la fecha (sábado, 4 de junio de 2022 9:56:23 a. m.) se convierte al valor:
     132988354159396418

    PowerShell último inicio de sesión en la computadora

  3. Sustituya su valor FileTimeDate en la siguiente consulta LDAP:
    (&(objectCategory=person)(objectClass=user)(lastLogon<=FileTimeDate))
  4. Abra la consola ADUC, haga clic derecho en el Consultas guardadas nodo y seleccione Nuevo > Consulta; equipo del último inicio de sesión del directorio activo
  5. Especifique el nombre de su consulta y haga clic en el Definir consulta botón;
  6. Seleccionar Búsqueda personalizada de la lista desplegable y vaya a la Avanzado pestaña;
  7. Copia tu código en el Introducir consulta LDAP campo; último inicio de sesión directorio activo de la computadora
  8. Guarde su consulta haciendo clic en Aceptar > Aceptar;
  9. Selecciona tu consulta en Consultas Guardadas y presiona F5 para actualizar la lista de objetos. Como resultado, aparecerá en la consola ADUC una lista plana de usuarios que no han iniciado sesión en el dominio durante más de 90 días. directorio activo del último inicio de sesión de la computadora
  10. Puede deshabilitar o eliminar cuentas de usuario de dominio inactivas directamente desde la consola de Active Directory.

Encuentra la hora del último inicio de sesión usando CMD

Puede averiguar la hora en que el usuario inició sesión por última vez en el dominio desde la línea de comandos utilizando las herramientas net o dsquery.

Abra un símbolo del sistema (no necesita privilegios de administrador de dominio para obtener información de usuario de AD) y ejecute el comando:

net user administrator /domain| findstr "Last"

Obtuvo la última hora de inicio de sesión del usuario: 08.08.2019 11:14:13.

último usuario de inicio de sesión en la computadora

Si desea obtener la última hora de inicio de sesión de un usuario local, debe eliminar el /dominio parámetro:

net user User | findstr "Last"

También puede obtener la hora del último inicio de sesión mediante dsquery. Por ejemplo:

dsquery * domainroot -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=administrator))" -attr distinguishedName lastLogon lastLogonTimestamp -limit 0

El principal problema es que los atributos lastLogon y lastLogonTimestamp se almacenan en formato de marca de tiempo en AD, y además es necesario convertirlo a un formato de hora normal.

encontrar el último usuario conectado de una computadora

También puede usar este comando para encontrar todos los usuarios que están inactivos, por ejemplo, durante 10 semanas:

dsquery user domainroot -inactive 10

Buscar la hora del último inicio de sesión con PowerShell

También puede usar PowerShell para obtener la última hora de inicio de sesión en el dominio del usuario. Para esto, debe usar el módulo PowerShell Active Directory. Instale este módulo e impórtelo en su sesión de PowerShell:

Import-Module ActiveDirectory

Para encontrar la hora del último inicio de sesión para la cuenta del administrador del dominio, ejecute el comando:

Get-ADUser -Identity administrator -Properties LastLogon

El cmdlet devolvió la hora en formato de marca de tiempo. Para convertirlo a una hora normal, use el siguiente comando:

Get-ADUser -Filter {Name -eq "administrator"} -Properties * | Select-Object Name, @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}}

powershell encuentra el último usuario de la computadora en el que inició sesión

Con PowerShell, puede mostrar la última hora de inicio de sesión para todos los usuarios de dominio habilitados:

Get-ADUser -filter {enabled -eq $true} -Properties * | Select-Object Name, @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}}|Sort-Object LastLogon -Descending

powershell obtener anuncio usuario último inicio de sesión computadora

O puede encontrar usuarios que están inactivos por más de 90 días:

$date1= (Get-Date).AddDays(-90)

Get-ADUser -Properties LastLogonDate -Filter {LastLogonDate -lt $date1} | ft

Después de identificar las cuentas inactivas, le recomendamos que deshabilite las cuentas de esos usuarios, espere unas semanas y luego elimine las cuentas si no se han informado problemas. Puede deshabilitar a los usuarios inactivos mediante el cmdlet Disable-ADAccount:

Get-ADUser -Properties LastLogonDate -Filter {LastLogonDate -lt $date1} | Disable-ADAccount

De manera similar, puede obtener la última hora de inicio de sesión para objetos de computadora en un dominio. El siguiente comando listará todas las computadoras que han estado inactivas por más de 90 días:

Get-ADComputer  -Properties LastLogonDate -Filter {LastLogonDate -lt $date1} | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Pista. Puede obtener el historial de inicio de sesión de usuario detallado solo desde los registros de eventos de seguridad de los controladores de dominio.

También puede utilizar el Buscar-ADAcuenta cmdlet para buscar usuarios y equipos inactivos. Para hacer esto, use el -Cuenta inactiva [-DateTime DateTime] [-TimeSpan TimeSpan] parámetro:

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

último inicio de sesión de la computadora del anuncio

Puede usar este cmdlet para buscar usuarios inactivos (parámetro -UsersOnly) o equipos (-ComputersOnly):

Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2022’|Select Name,LastLogonDate | Export-Csv "c:psincative_computers.csv"

En el último ejemplo, exportamos la lista de computadoras inactivas a un archivo CSV.

Obtenga el último inicio de sesión para el usuario en todos los controladores de dominio

Como dijimos anteriormente, si hay varios controladores de dominio en su dominio, entonces el valor de último inicio de sesión en ellos puede diferir. Si un usuario ha estado inactivo durante más de 14 días, la forma más sencilla es obtener el valor del atributo lastLogonTimeStamp de cualquier controlador de dominio. Sin embargo, si no sabe en qué sitio o DC se autenticó el usuario por última vez, deberá consultar todos los controladores de dominio en el AD para obtener la última fecha de inicio de sesión del usuario.

El siguiente script de PowerShell recorre todos los controladores de dominio del dominio y obtiene el valor del atributo lastLogonTime de cada uno de ellos. El resultado se exporta a un archivo CSV:

$userlogonname="bjackson"

$csvoutputfile="c:pslastlogon_from_all_dcs.csv"

$resultlogonhistory=@()

Import-Module ActiveDirectory

$DCs=(Get-ADDomainController -Filter *).Name

 foreach ($DC in $DCs) {

 Try {

$aduser=Get-ADUser $userlogonname -Server $DC -Properties lastlogon -ErrorAction Stop

     $resultlogonhistory +=New-Object -TypeName PSObject -Property ([ordered]@{

    'User' = $userlogonname

    'DC' = $dc

    'LastLogon' = [datetime]::FromFileTime($aduser.'lastLogon')

})

}

Catch {

Write-host "Can’t connect DC $($dc)!"

}

}

$resultlogonhistory|Export-CSV -path $csvoutputfile -NoTypeInformation -Delimiter "," -Encoding UTF8

anuncio equipo último inicio de sesión usuario

Si necesita encontrar rápidamente el valor máximo de LastLogon de usuario de todos los DC, use la siguiente línea:

[datetime]::FromFileTime((Get-ADDomainController -Filter * | foreach {Get-ADUser 'bjackson' -Properties LastLogon -Server $_.Name | select LastLogon} | Measure-Object -Property LastLogon -Maximum).Maximum)

Valora este artculo post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *