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

- Link: https://binariocero.com/windows/exportacion-de-logs-de-eventos-de-windows-desde-powershell-para-analisis-local
- Published: 2025-07-05T10:22:25+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

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:

    ```wp-block-preformatted
    Get-WinEvent -ListLog * | Sort-Object LogName
    ```

Esto devuelve registros como:

    ```wp-block-preformatted
    ApplicationSystemSecurityMicrosoft-Windows-Windows Defender/Operational...
    ```

## Paso 2 – Consultar eventos manualmente (opcional)

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

    ```wp-block-preformatted
    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

    ```wp-block-preformatted
    # 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ónWrite-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:

    ```wp-block-preformatted
    logs_Application_30dias_20250702-190300.txt
    ```

Cada entrada tiene el siguiente formato:

    ```wp-block-preformatted
    === EVENTO ===Fecha: 01/07/2025 18:23:14ID: 1000Nivel: ErrorOrigen: Application ErrorMensaje:Faulting application name: myapp.exe, version: 1.0.0.1, faulting module: ntdll.dll...
    ```
