Exportación de Logs de Eventos de Windows desde PowerShell para Análisis Local

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

El Visor de eventos de Windows es una herramienta poderosa para rastrear el comportamiento del sistema y las aplicaciones instaladas. Sin embargo, en entornos donde se requiere análisis avanzado, auditoría o correlación de eventos, es útil automatizar la extracción y el formateo de estos logs usando PowerShell.

Este artículo describe cómo exportar los eventos de cualquier registro del sistema operativo (por ejemplo, de aplicaciones de seguridad, bases de datos, navegadores o servicios internos) desde PowerShell, filtrando por fechas y guardando los resultados en un archivo legible.

Objetivo

Exportar todos los eventos generados en cualquier log de eventos específico dentro de un período de tiempo (por ejemplo, los últimos 30 días) y almacenarlos en un archivo .txt en una ruta local (C:\loganalisis).

Paso 1 – Identificar los logs disponibles

Para conocer todos los registros de eventos disponibles en el sistema:

Get-WinEvent -ListLog * | Sort-Object LogName

Esto devuelve registros como:

Application
System
Security
Microsoft-Windows-Windows Defender/Operational
...

Paso 2 – Consultar eventos manualmente (opcional)

Para visualizar los últimos eventos de un log cualquiera (por ejemplo, Application):

Get-WinEvent -LogName "Application" -MaxEvents 10 |
Format-List TimeCreated, Id, LevelDisplayName, Message

Paso 3 – Exportar eventos a archivo .txt

El siguiente script permite:

  • Seleccionar cualquier log de eventos (Application, System, Security, o personalizado).
  • Exportar los eventos de los últimos 30 días.
  • Guardarlos en un archivo legible en C:\loganalisis.

Script genérico completo

# Parámetro: nombre del log que deseas consultar (puedes cambiarlo a otro)
$logName = "Application" # Cambia esto según lo que necesites: "System", "Security", "Microsoft-Windows-Defender/Operational", etc.

# Crear carpeta si no existe
$logFolder = "C:\loganalisis"
if (-not (Test-Path $logFolder)) {
New-Item -Path $logFolder -ItemType Directory | Out-Null
}

# Definir fecha de inicio (últimos 30 días)
$startDate = (Get-Date).AddDays(-30)

# Definir ruta del archivo de salida
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$logFileName = $logName -replace '[\\\/\:\*\?"<>\|]', '_' # Reemplaza caracteres no válidos
$outputFile = "$logFolder\logs_${logFileName}_30dias_$timestamp.txt"

# Obtener eventos del log desde hace 30 días
$events = Get-WinEvent -LogName $logName |
Where-Object { $_.TimeCreated -ge $startDate }

# Formatear eventos de forma legible
$formatted = $events | ForEach-Object {
"=== EVENTO ===`n" +
"Fecha: $($_.TimeCreated)`n" +
"ID: $($_.Id)`n" +
"Nivel: $($_.LevelDisplayName)`n" +
"Origen: $($_.ProviderName)`n" +
"Mensaje:`n$($_.Message)`n"
}

# Guardar en archivo
$formatted | Out-File -FilePath $outputFile -Encoding UTF8

# Confirmación
Write-Output "Logs del registro '$logName' exportados a: $outputFile"

Personalizaciones útiles

  • Cambiar el rango de fechas:
    • 7 días: (Get-Date).AddDays(-7)
    • 2 semanas: (Get-Date).AddDays(-14)
  • Filtrar solo por errores:

    Where-Object { $_.TimeCreated -ge $startDate -and $_.LevelDisplayName -eq "Error" }
  • Buscar por palabras clave:

    Where-Object { $_.Message -like "*fail*" -or $_.Message -like "*error*" }
  • Exportar a CSV para Excel:
    Reemplazar el bloque de formato por algo como:

    $events | Select-Object TimeCreated, Id, LevelDisplayName, ProviderName, Message | Export-Csv -Path "$logFolder\logs_$logFileName.csv" -NoTypeInformation -Encoding UTF8

Resultado esperado

Se genera un archivo .txt en C:\loganalisis\ con nombre como:

logs_Application_30dias_20250702-190300.txt

Cada entrada tiene el siguiente formato:

=== EVENTO ===
Fecha: 01/07/2025 18:23:14
ID: 1000
Nivel: Error
Origen: Application Error
Mensaje:
Faulting application name: myapp.exe, version: 1.0.0.1, faulting module: ntdll.dll...
Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.