¿Cómo obtener el historial de inicio de sesión de usuario de Windows 10 con PowerShell?

En Windows, puede realizar un seguimiento de los eventos de inicio y fin de sesión de los usuarios mediante el registro de seguridad. En este artículo, le mostraremos cómo obtener el historial de inicio y cierre de sesión de usuario de los Registros de eventos del equipo local mediante un sencillo script de PowerShell.

Para que los eventos de inicio/fin de sesión del usuario se muestren en el registro de seguridad, debe habilitar la auditoría de los eventos de inicio de sesión mediante políticas de grupo.

Puede habilitar la auditoría de inicio de sesión en todos los ordenadores unidos por un dominio usando un GPO de dominio.

  1. Ejecute la consola de administración de políticas de grupo con la cuenta de administrador de dominio (gpmc.msc);
  2. Haga clic con el botón derecho del ratón en Default Domain Policy y seleccione Edit ;
  3. Ve a la siguiente sección de GPO: Configuración del ordenador> Políticas> Configuración de Windows> Configuración de Políticas de Auditoría Avanzadas> Políticas de Auditoría> Conexión/Desconexión;
  4. Habilite las siguientes opciones de GPO: Cierre de sesión de auditoría , Inicio de sesión de auditoría, Otros eventos de inicio/cierre de sesión de auditoría . Para ello, en cada política, seleccione las opciones Configurar los siguientes eventos de auditoría> Éxito ;
  5. Guarde el GPO y espere hasta que la nueva configuración de la política se aplique a los ordenadores del dominio (puede aplicar la política a un cliente inmediatamente usando el comando gpupdate ).

Ahora, cuando un usuario inicia la sesión local o remota en una computadora, aparece un evento con EventID 4624 en los Registros de Windows> Registro de eventos de seguridad.

Puede filtrar manualmente todos los eventos de inicio de sesión con el código especificado en el Visor de eventos. Ejecute la consola de Administración de Computación . Vaya a Herramientas del Sistema> Visor de Eventos> Windows> Registros> Seguridad. Haga clic con el botón derecho del ratón en esta sección y seleccione Filtrar el registro actual . En la ventana que se abre, especifica Event ID 4624 y haz clic en OK.

LEER TAMBIÉN Acceder a la consola Hyper-V VM usando RDCMan

Como resultado, sólo los eventos de inicio de sesión del usuario se mostrarán en el registro de eventos. Abre cualquier evento de Éxito de Auditoría . La descripción del evento dice ” Una cuenta fue iniciada con éxito “. El nombre del usuario que se ha conectado se especifica en el siguiente campo de mensaje:

Nuevo inicio de sesión:

Identificación de seguridad: CORPjsmith

Nombre de la cuenta: jsmith

Si el usuario se ha conectado desde un ordenador remoto, el nombre (o IP) del ordenador se especificará en el: Dirección de la red de origen: 192.168.1.70

Intentemos usar PowerShell para seleccionar todos los eventos de inicio y fin de sesión de los usuarios. Para seleccionar los eventos con EventID 4634 y 4624, usamos el cmdlet Get-WinEvent . El siguiente script de PowerShell debe ejecutarse con privilegios elevados.

$Resultados = @()

$logs =Get-WinEvent -LogName Security| Where-Object {$_.ID -eq 4634 -o $_.ID -eq 4624}

Para cada uno ($log en $logs) {

si ($log.Id -eq 4634)

{

$type=”SessionStop”

$username=$log.Properties[1].Value

}

Else {

$type=”SessionStart”

$username=$log.Properties[5].Value

}

if ($username -ne “”) {

$Resultados += Nuevo Objeto PSObjecto -Propiedad @{“Tiempo” = $log.TiempoCreado; “Evento” = $tipo; “Usuario” = $nombre_de_usuario};

}

}

$Resultados

Después de ejecutar este script, obtendrá una lista de todos los eventos de inicio y fin de sesión de usuario en este ordenador. Si desea seleccionar todos los eventos de una cuenta de usuario específica, añada la siguiente variable en la parte superior del guión:

$userlog =”jsmith”

Y reemplace la línea:

LEER TAMBIÉN Cómo encontrar la última vez que un usuario de Active Directory o una computadora se conecta?

if ($username -ne “”) {

a:

if ($username -eq $userlog) {

Especifique el nombre de usuario (sin distinguir entre mayúsculas y minúsculas) para el que desea recibir el informe de actividad del usuario en una computadora específica.

Para mayor comodidad, puede mostrar los resultados en una tabla gráfica usando Out-GridView. Sólo reemplace la última línea con:

$Resultados|Out-GridView .

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.