Windows tiene varios registros de eventos diferentes, pero ¿cómo se recuperan rápidamente? El cmdlet Get-WinEvent
puede recuperar registros de eventos clásicos de Windows, como los registros del Sistema y de Aplicaciones, registros generados por la tecnología de registro de eventos de Windows, ¡e incluso registros de Event Tracing for Windows (ETW)!
En este artículo, aprende cómo aprovechar Get-WinEvent
para recuperar y filtrar eventos de registros de eventos.
Prerrequisitos
Para seguir, solo necesitas una versión actual de Windows 10 y PowerShell 5.1 o superior. Este artículo utiliza Windows 10 y PowerShell 7.1.
Listar registros disponibles con Get-WinEvent
Es difícil saber qué entradas de registro puedes necesitar sin conocer todos los registros disponibles. Con Get-WinEvent
, puedes listar rápidamente todos los registros disponibles usando el parámetro -ListLog
. El valor *
en el parámetro le dice a Get-WinEvent
que liste todos los registros sin filtrar. Como se muestra a continuación, se recuperan todos los registros, pero solo se muestran un conjunto limitado de propiedades utilizando el Select-Object
cmdlet.
No todos los registros están habilitados por defecto. Es posible que necesites abrir el Visor de eventos, localizar el registro y hacer clic derecho para Habilitar el registro antes de que aparezcan eventos.

Todos los registros posteriores a Windows Vista se guardan como archivos
*.evtx
en lugar del formato anterior*.evt
. La propiedadIsClassicLog
indica si los eventos del registro están definidos en un archivo de Mensajes, formato*.mc
, o en un manifiesto, formato*.xml
.
Una propiedad interesante es el LogMode
, que probablemente hayas notado que generalmente se establece en Circular
.
Circular
– Sobrescribe la entrada de registro más antigua una vez que esté llena.Retener
– Conserva todos los eventos hasta que el registro esté lleno y deja de registrar hasta que se libere espacio.AutoBackup
– Realiza automáticamente copias de seguridad y archiva los registros de eventos una vez que estén llenos.

Por último, al observar la propiedad LogType
, hay varios tipos diferentes de registros. Esta propiedad sirve más como una propiedad de categorización, pero generalmente informa cómo se utiliza el registro y los tipos de eventos que muestra.
- Administrativo – Principalmente destinado para usuarios finales y usuarios administrativos.
- Analítico – Normalmente, un registro de alto volumen, destinado a describir las operaciones del programa.
- Depuración – Destinado para desarrolladores que necesitan una inmersión profunda en los internos del programa.
- Operativo – Un evento que ocurre durante la operación y es útil para diagnosticar ocurrencias y activar procesos.

Listado de Proveedores de Registro de Eventos
Ahora que tienes una comprensión sólida de los diferentes registros y sus propiedades, ayuda entender qué es un Proveedor de Registro de Eventos. Un proveedor, en la terminología de registro de eventos, es una fuente de un evento.
Los proveedores de registro de eventos son únicos y están vinculados a cada registro, como los registros de Aplicación o Sistema, y servirán como la fuente nombrada donde se origina un evento.
Tal vez te gustaría encontrar problemas al filtrar registros, y quizás solo estés interesado en problemas de un proveedor en particular. Para listar qué proveedores están disponibles, utiliza el parámetro -ListProvider
. Como se muestra a continuación, el *
lista todos los proveedores disponibles y a qué registro están vinculados, como Windows PowerShell o System.

Quizás quieras listar solo los proveedores disponibles para un registro específico, como System
. Para hacerlo, podrías filtrar eventos usando el comando Where-Object
utilizando los valores de la propiedad LogLinks
. La propiedad LogLinks
muestra los registros de eventos vinculados como una lista.
Para filtrar los registros solicitados con Where-Object
, utiliza el operador de comparación -In
para filtrar solo aquellos eventos con System
en el valor de la propiedad LogLinks
. Finalmente, el uso de Format-Table -AutoSize
facilita la lectura de la salida, como se muestra a continuación.

Recuperación de Registros de Eventos Clásicos con Get-WinEvent
El primer paso para solucionar un problema de Windows es recuperar el registro de eventos de la Aplicación o del Sistema, que resultan ser Registros de Eventos Clásicos. En el ejemplo que se muestra a continuación, recuperarás los primeros 100
eventos usando el parámetro -MaxEvents
del registro de eventos de la Aplicación.
Para facilitar la lectura de los resultados, selecciona solo las propiedades necesarias para leer las entradas más fácilmente. De lo contrario, las entradas están agrupadas por el nombre del proveedor, lo que dificulta el análisis de la lista de resultados.

Encontrar Eventos Modernos de Windows con Get-WinEvent
Ahora que ha recuperado eventos del registro de aplicaciones clásico, ¿qué pasa con los resultados de un registro de eventos de Windows más nuevo, como Microsoft-Windows-WindowsUpdateClient/Operational
?
A diferencia de un registro de eventos clásico, como System
, el registro Microsoft-Windows-WindowsUpdateClient/Operational
es un registro moderno, y Get-WinEvent
funciona igual que a continuación.

¿Qué tal si solo quiere obtener los eventos más antiguos? Aunque podría revertir el orden de los resultados con Sort-Object
, utilice el parámetro -Oldest
para recuperar los primeros 10
eventos, como se muestra a continuación.
El comando Get-WinEvent
hace el filtrado por usted en lugar de devolver todos los resultados y ordenarlos, lo cual suele ser más lento.

Recuperación de Archivos de Event Tracing for Windows (ETW) con Get-WinEvent
Tal vez tenga un archivo exportado *.evtx
de otra computadora o haya respaldado un registro existente. Puede leer esos registros con el cmdlet Get-WinEvent
. Si necesita mantener registros para fines de auditoría, Get-WinEvent
es una excelente manera de consultar esos registros con cmdlets estándar dentro de scripts rápidamente.
Para demostrar cómo recuperar entradas de registro de un archivo *.evtx
, necesitas un archivo de registro exportado.
1. Abre el Visor de eventos y navega hasta un registro. En este ejemplo, el registro Aplicación y Servicios → Registros de Windows PowerShell.

2. Luego, haz clic en la opción Guardar todos los eventos como… en el panel de Acciones.

3. Guarda el archivo en una ubicación del disco para que pueda ser recuperado por el comando Get-WinEvent
.

Ahora que has exportado un archivo de registro, pasa la ubicación del archivo de registro mediante el parámetro -Path
para leer los eventos. En el ejemplo mostrado a continuación, el registro de Windows PowerShell se exporta para su posterior consumo.

Filtrado de Registros de Eventos de Windows Usando Get-WinEvent
Aunque podrías filtrar registros con el cmdlet estándar Where-Object
, Get-WinEvent
ofrece filtros integrados. Al devolver todos los resultados y luego filtrar, se realiza más trabajo del necesario. En cambio, siempre debes intentar filtrar en la fuente tanto como sea posible.
El cmdlet Get-WinEvent
proporciona tres parámetros para ayudarte a filtrar a través de miles de eventos llamados -FilterHashTable
, -FilterXPath
y -FilterXML
. Cada parámetro generalmente realiza la misma tarea solo que de una manera diferente.
Filtrado de Registros de Eventos con FilterHashTable
El parámetro -FilterHashTable
filtra el contenido según las propiedades coincidentes, como LogName
. En lugar de utilizar el parámetro -LogName
para filtrar por un registro específico, puede utilizar en su lugar una tabla hash, como @{'LogName' = 'Application'}
, que correspondería a la propiedad de evento LogName
.
El ejemplo mostrado a continuación proporciona una tabla hash al parámetro -FilterHashTable
que busca solo el registro de aplicación y con una hora de inicio que son todos los eventos pasados la medianoche del día actual, Get-WinEvent
devuelve resultados rápidamente.

FilterHashTable
parameter.Compare las velocidades de filtrado del mismo comando anterior con uno filtrado a través de Where-Object
en lugar del parámetro -FilterHashTable
en el pipeline. Como puede ver, el comando que utiliza Where-Object
es mucho más lento que el que utiliza el parámetro -FilterHashTable
.

FilterHashTable
and Where-Object
.Filtrado de registros de eventos usando el parámetro FilterXPath
Las entradas de registro de eventos se almacenan como archivos XML, y por lo tanto puede utilizar el lenguaje XPath, un lenguaje de consulta XML, para filtrar las entradas del registro. Realizando el mismo comando utilizado anteriormente y traduciéndolo a XPath, puede lograr los mismos resultados.
Para crear una consulta XPath, utilice la capacidad de filtrado en el Visor de eventos de Windows, como se muestra a continuación.
1. Abra el Visor de eventos y navegue hasta un registro, como el registro de Windows → Aplicación.

2. A continuación, haz clic en el enlace Filtrar registro actual en el panel derecho.

3. Ingresa los parámetros que deseas utilizar para filtrar el registro.

4. Haz clic en la pestaña XML y copia la sección contenida dentro de la etiqueta Select.

5. Ahora, copia y pega el contenido copiado con el parámetro -FilterXPath
. Ahora puedes ver que utilizando la sintaxis XPath encontrada en el visor de registros de eventos, puedes construir una consulta para filtrar solo la información necesaria.

FilterXPath
parameter.Adentrarse en cómo crear consultas XPath está fuera del alcance de este artículo, pero el formato básico se muestra a continuación. Cuando el parámetro FilterXPath
filtra una fecha, verás una gran diferencia: necesitas utilizar un formato de fecha más específico, yyyy-MM-ddTHH:mm:ss.fffZ
, y la fecha debe devolverse en UTC, lo cual se indica con el interruptor -AsUTC
.

Filtrando Resultados del Registro de Eventos con FilterXML
Finalmente, el último parámetro de filtrado disponible es el parámetro -FilterXML
. A diferencia de los parámetros -FilterXPath
y -FilterHashTable
, este parámetro toma XML que luego se utiliza para filtrar los eventos. El parámetro -FilterXML
permite reglas más complejas y, como se muestra a continuación, puede replicar los ejemplos de filtrado anteriores.
Como se muestra en el ejemplo anterior, puede recuperar una consulta preformateada de la capacidad Visor de eventos → Filtrar registro actual. En lugar de seleccionar solo el contenido en el nodo Seleccionar
, utilizará toda la consulta. No se eligen filtros reales, como se indica por el *
en el nodo Seleccionar
. Esto proporcionará el marcado general para el próximo ejemplo.

En lugar de crear un comando de una línea, primero separe la consulta XML y asigne el marcado a una variable, $Consulta
, en el ejemplo a continuación. Asignar la consulta a una variable facilita su uso y legibilidad. A continuación, pase la variable $Consulta
al parámetro -FilterXML
de Get-WinEvent
.
Como se muestra a continuación, verá los resultados de la consulta más compleja que devuelve todos los eventos de ese día y almacenados en el registro Aplicación
.

FilterXML
works.Conclusión
El cmdlet Get-WinEvent
hace un trabajo rápido de consultar múltiples fuentes de registros de eventos con potentes capacidades de filtrado. Desde auditorías hasta resolución de problemas, el cmdlet Get-WinEvent
es una adición crucial a cualquier conjunto de herramientas de administradores de sistemas.