PowerShell script for advanced search in Amazon RDS audit logs.
- ✅ Simultaneous search in multiple log files
- ✅ Support for prod and preprod environments
- ✅ Multiple term search (AND/OR logical)
- ✅ Advanced filters (date, application, database, action)
- ✅ Export to CSV, JSON or TXT
- ✅ Detailed search statistics
- ✅ Interactive mode for less technical users
- ✅ Colors and improved console formatting
- ✅ Configurable result limit
- ✅ Visual progress during long searches
log_search_engine/
├── Search-RDSLogs.ps1 # Main script
├── prod/
│ ├── server_audit.log
│ ├── server_audit.log.01
│ ├── server_audit.log.02
│ └── ...
└── preprod/
├── server_audit.log
├── server_audit.log.01
├── server_audit.log.02
└── ...
- Copy the
Search-RDSLogs.ps1script to the root folderlog_search_engine - Ensure the
prodandpreprodfolders contain the logs - Run PowerShell as administrator (if necessary)
.\Search-RDSLogs.ps1 -InteractiveThe script will guide you step by step through all options.
Search for a term in production:
.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "mqtt-decoder"Search in both environments:
.\Search-RDSLogs.ps1 -Environment both -SearchTerms "ERROR"Search for a specific GlobalSmartID:
.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "HGQ09NJ0N94"Search for lines with ANY term (OR logic):
.\Search-RDSLogs.ps1 -Environment both -SearchTerms "ERROR","FAIL","TIMEOUT"Search for lines with ALL terms (AND logic):
.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "mqtt-decoder","INSERT" -MatchAllFilter by application:
.\Search-RDSLogs.ps1 -Environment prod -Application "mqtt-decoder" -ShowStatsFilter by database:
.\Search-RDSLogs.ps1 -Environment preprod -Database "ENV000_MasterCommonData"Filter by action type:
.\Search-RDSLogs.ps1 -Environment prod -Action "QUERY"Filter by date range:
.\Search-RDSLogs.ps1 -Environment both -DateFrom "2025-12-16" -DateTo "2025-12-16 12:00:00"Combinación de filtros:
.\Search-RDSLogs.ps1 `
-Environment prod `
-Application "mqtt-decoder" `
-Action "INSERT" `
-DateFrom "2025-12-16 10:00:00" `
-DateTo "2025-12-16 12:00:00" `
-ShowStatsExportar a CSV:
.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "ERROR" -OutputFile "errores.csv"Exportar a JSON:
.\Search-RDSLogs.ps1 -Environment both -Application "mqtt-decoder" `
-OutputFile "mqtt_logs.json" -ExportFormat JSONExportar a TXT (líneas originales):
.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "HGQ09NJ0N94" `
-OutputFile "device_logs.txt" -ExportFormat TXTObtener solo los primeros 100 resultados:
.\Search-RDSLogs.ps1 -Environment prod -Action "QUERY" -MaxResults 100.\Search-RDSLogs.ps1 -Environment prod -SearchTerms "ERROR" -CaseSensitive.\Search-RDSLogs.ps1 `
-Environment both `
-SearchTerms "error","fail","exception" `
-DateFrom "2025-12-15" `
-OutputFile "errores_recientes.csv" `
-ShowStats.\Search-RDSLogs.ps1 `
-Environment prod `
-SearchTerms "HGQ09NJ0N94:3" `
-ShowStats `
-OutputFile "dispositivo_HGQ09NJ0N94.csv".\Search-RDSLogs.ps1 `
-Environment prod `
-Database "ENV000_MasterCommonData" `
-Action "QUERY" `
-DateFrom "2025-12-16" `
-MaxResults 1000 `
-OutputFile "queries_mastercommon.csv"# Conexiones
.\Search-RDSLogs.ps1 -Environment prod -Action "CONNECT" -ShowStats
# Desconexiones
.\Search-RDSLogs.ps1 -Environment prod -Action "DISCONNECT" -ShowStats.\Search-RDSLogs.ps1 `
-Environment prod `
-Application "mqtt-decoder" `
-DateFrom "2025-12-16 11:00:00" `
-DateTo "2025-12-16 12:00:00" `
-ShowStats `
-OutputFile "mqtt_decoder_analysis.csv".\Search-RDSLogs.ps1 `
-Environment prod `
-SearchTerms "tbl_AA_JSON_import","SDM630CT" `
-MatchAll `
-MaxResults 50.\Search-RDSLogs.ps1 `
-Environment both `
-SearchTerms "CALL prc_" `
-ShowStats `
-OutputFile "stored_procedures.csv".\Search-RDSLogs.ps1 `
-Environment prod `
-SearchTerms "Eastron","SDM630CT" `
-MatchAll `
-DateFrom "2025-12-16" `
-ShowStats| Parámetro | Tipo | Valores | Descripción |
|---|---|---|---|
-Environment |
String | prod, preprod, both | Ambiente donde buscar |
-SearchTerms |
String[] | Cualquier texto | Términos a buscar |
-MatchAll |
Switch | - | Buscar TODOS los términos (AND) |
-CaseSensitive |
Switch | - | Búsqueda sensible a mayúsculas |
-DateFrom |
String | yyyy-MM-dd [HH:mm:ss] | Fecha inicial |
-DateTo |
String | yyyy-MM-dd [HH:mm:ss] | Fecha final |
-Application |
String | Nombre de app | Filtrar por aplicación |
-Database |
String | Nombre de BD | Filtrar por base de datos |
-Action |
String | QUERY, CONNECT, etc. | Filtrar por acción |
-OutputFile |
String | Ruta de archivo | Archivo de salida |
-MaxResults |
Int | Número | Límite de resultados (0=sin límite) |
-ShowStats |
Switch | - | Mostrar estadísticas |
-ExportFormat |
String | CSV, JSON, TXT | Formato de exportación |
-Interactive |
Switch | - | Modo interactivo |
El script muestra:
- Banner inicial con información del script
- Criterios de búsqueda aplicados
- Progreso durante el procesamiento
- Resultados encontrados (primeros 10 por defecto)
- Estadísticas (si se solicita):
- Total de líneas procesadas
- Líneas que coinciden
- Porcentaje de coincidencia
- Top aplicaciones
- Top acciones
Ejecuta en PowerShell como administrador:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserVerifica que:
- Estás ejecutando el script desde la carpeta
log_search_engine - Existen las carpetas
prodypreprod - Los archivos se llaman
server_audit.logoserver_audit.log.XX
- Usa
-MaxResultspara limitar resultados - Aplica filtros de fecha para reducir el rango
- Considera buscar solo en un ambiente a la vez
Asegúrate de que tu terminal soporte UTF-8. En PowerShell:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8- Usa el modo interactivo cuando no estés seguro de los parámetros
- Exporta resultados grandes a CSV en lugar de mostrarlos en consola
- Aplica filtros de fecha para búsquedas más rápidas
- Usa
-ShowStatspara entender el volumen de datos - Combina filtros para búsquedas más precisas
- Guarda tus búsquedas frecuentes como scripts .bat o .ps1
@echo off
powershell -ExecutionPolicy Bypass -File ".\Search-RDSLogs.ps1" ^
-Environment both ^
-SearchTerms "error","fail" ^
-DateFrom "%date:~6,4%-%date:~3,2%-%date:~0,2%" ^
-OutputFile "errores_%date:~0,2%%date:~3,2%%date:~6,4%.csv" ^
-ShowStats
pause@echo off
powershell -ExecutionPolicy Bypass -File ".\Search-RDSLogs.ps1" ^
-Environment prod ^
-Application "mqtt-decoder" ^
-ShowStats ^
-MaxResults 500
pauseSi encuentras problemas o tienes sugerencias:
- Verifica que tu versión de PowerShell sea 5.1 o superior:
$PSVersionTable.PSVersion - Revisa los logs para errores específicos
- Intenta con búsquedas más simples primero
- Usa el modo interactivo para validar tus criterios
Uso interno - Script de utilidad para análisis de logs de RDS.
Versión: 1.0
Última actualización: Diciembre 2025
Compatibilidad: PowerShell 5.1+