Formatos de salida
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /es/docs/02-output-formats/index.md.
Convert-DNSDebugLogFile genera hasta tres archivos por cada registro de entrada:
| Archivo | Contiene | Se crea cuando |
|---|---|---|
<name>.csv | Una fila por cada entrada de registro analizada | -OutputType CSV o Both |
<name>_Statistic.csv | Conteo diario de registros por contexto | -OutputType Statistic o Both |
<name>_PacketStatistic.csv | Conteo diario de consultas por cliente, protocolo, dirección y tipo de registro | -OutputType Statistic o Both |
Both es el valor predeterminado. La salida se guarda junto al archivo de entrada a menos que configures -OutputFile.
Los archivos de ejemplo enlazados en esta página son resultados reales de conversiones, no simulaciones. Descarga uno y ábrelo en Excel antes de decidir el diseño de tu pipeline.
El archivo de datos CSV
Ejemplo de salida:
| Localidad | Columna Detalles | Archivos |
|---|---|---|
| en-US | no poblada | WithComputerName, NoComputerName |
| de-DE | no poblada | WithComputerName, NoComputerName |
| de-DE | poblada | WithComputerName, NoComputerName |
Dos filas de una conversión real — una consulta DNS y una nota interna del servidor:
DateTime;ThreadId;Context;PacketId;Protocol;Direction;ClientIP;Xid;Type;Opcode;FlagsHex;FlagsChar;ResponseCode;QuestionType;QuestionName;Information;Details;ComputerName
2026-01-20 23:00:16;0FE0;Packet;000002C53117D990;UDP;Rcv;10.0.0.2;c049;Query;Standard;0001;RecursionDesired;NOERROR;A;"odc.officeapps.live.com";"";"";dc01
2026-01-20 23:00:16;DF0;Note;;;;;;;;;;;;"";"got GQCS failure on a dead socket context status=995, socket=904";"";dc01
Columnas
Siempre 18 columnas, siempre en este orden:
| # | Columna | Significado | Uso típico |
|---|---|---|---|
| 1 | DateTime | Marca temporal de la entrada | Filtrado por tiempo, unión con otros registros |
| 2 | ThreadId | Hilo de trabajo del servidor DNS | Rara vez necesario; útil para correlacionar problemas internos del servidor |
| 3 | Context | Tipo de entrada: Packet, Event, Note, DSPoll, Init, Lookup, Recurse, Remote, Tombstone | Primer filtro que aplicarás — Packet es el tráfico DNS real |
| 4 | PacketId | Identificador interno del paquete | Emparejar una consulta con su respuesta |
| 5 | Protocol | UDP o TCP | Picos en TCP pueden indicar respuestas grandes o transferencias de zona |
| 6 | Direction | Rcv (consulta recibida) o Snd (servidor respondió) | Separar volumen de solicitudes del volumen de respuestas |
| 7 | ClientIP | Dirección del host que consulta | Análisis de los que más consultan, delimitación de incidentes |
| 8 | Xid | ID de transacción DNS (hexadecimal) | Emparejar solicitud y respuesta |
| 9 | Type | Query o Response | |
| 10 | Opcode | Standard, Notify, Update, Unknown | Separa actualizaciones dinámicas y notificaciones de zona de las consultas normales |
| 11 | FlagsHex | Banderas del encabezado en bruto (hexadecimal) | Para análisis profundo del protocolo |
| 12 | FlagsChar | Banderas decodificadas: Authoritative, Truncated, RecursionDesired, RecursionAvailable | Versión legible de lo anterior |
| 13 | ResponseCode | NOERROR, NXDOMAIN, SERVFAIL, … | Reporte de tasa de errores, búsqueda de fallos en resolución |
| 14 | QuestionType | Tipo de registro: A, AAAA, MX, PTR, TXT, … | El volumen de TXT es un indicador clásico de túneles |
| 15 | QuestionName | Nombre consultado como un FQDN normal | Coincidencia con inteligencia de amenazas, informes de dominios principales |
| 16 | Information | Texto libre para entradas Event / Note; para bloques de detalle Packet la línea de encabezado TCP/UDP | Lectura de mensajes del servidor |
| 17 | Details | Representación JSON de un bloque de detalle Packet; vacío en otro caso | Inspección completa del paquete sin volver al registro en bruto |
| 18 | ComputerName | Servidor origen, desde -ComputerName | Mantener conjuntos de datos multi-servidor atribuibles |
Dos cosas para planificar:
- No todas las columnas se llenan en cada fila. Solo las entradas
Packettienen IP del cliente, nombre de consulta y código de respuesta. Las filasNoteyEventllevan su texto enInformationy dejan vacías las columnas de protocolo. Diseña tu esquema de base de datos y filtros de panel en consecuencia. ComputerNamesiempre es la última columna, incluso si no usas-ComputerName. Entonces simplemente está vacía. Esto mantiene el diseño idéntico en todos los servidores para que puedas concatenar archivos de muchos servidores DNS sin un paso de mapeo de columnas.
La columna Detalles
Los bloques de detalle solo aparecen si el servidor DNS está configurado para registrar detalles completos del paquete. Cuando existen, el analizador los convierte en un único valor JSON para que la fila siga siendo una sola:
{
"Socket": "848",
"Remote": "addr 10.10.0.11, port 60580",
"Buflength": "0x10000 (65536)",
"Message": {
"XID": "0x0001",
"OPCODE": "0 (QUERY)",
"RCODE": "0 (NOERROR)",
"QUESTION": [ { "Name": "berlin.de", "QTYPE": "A (1)", "QCLASS": "1" } ],
"ANSWER": []
}
}
Analizar estos bloques consume tiempo y hace que el CSV sea considerablemente más grande. Si no los necesitas, usa -NoDetailsParsing: la columna permanece presente pero vacía, y la conversión es más rápida. Consulta Rendimiento.
Los archivos de estadísticas
Las estadísticas son agregados diarios. Úsalas cuando quieras una tendencia o un resumen y no quieras mover el conjunto completo de registros — son órdenes de magnitud más pequeñas que el archivo de datos.
Estadísticas por contexto (*_Statistic.csv)
Responde: ¿cuánto de qué tipo de actividad ocurrió por día?
Date;Context;Count;ComputerName
2026-01-20;Event;2;dc01
2026-01-20;Note;2;dc01
2026-01-20;Packet;12;dc01
| Columna | Significado |
|---|---|
Date | Día, siempre en formato yyyy-MM-dd |
Context | Nombre del contexto (Packet, Event, Note, …) |
Count | Número de registros de ese contexto en ese día |
ComputerName | Servidor origen |
Archivos de ejemplo: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Estadísticas de paquetes (*_PacketStatistic.csv)
Responde: ¿quién consultó qué, con qué frecuencia, por día?
Date;ClientIP;Protocol;Direction;QuestionType;Count;ComputerName
2026-01-20;10.0.0.1;UDP;Rcv;A;3;dc01
2026-01-20;10.0.0.1;UDP;Snd;A;3;dc01
2026-01-20;10.0.0.2;UDP;Rcv;A;3;dc01
| Columna | Significado |
|---|---|
Date | Día, siempre en formato yyyy-MM-dd |
ClientIP | Host que consulta |
Protocol | UDP o TCP |
Direction | Rcv o Snd |
QuestionType | Tipo de registro DNS |
Count | Número de paquetes coincidentes ese día |
ComputerName | Servidor origen |
Archivos de ejemplo: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Count es el número de registros en ese grupo diario. Un cliente que preguntó por el mismo nombre 500 veces contribuye con 500, no con 1. Si un número parece demasiado alto, esta suele ser la razón.
Delimitador y formato de fecha
Ambos tipos de salida respetan -Delimiter (por defecto ;) y -OutputCulture. Para cualquier cosa que será importada por una máquina, escribe marcas temporales tipo ISO:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
Esto produce 2026-01-20 23:00:16, que SQL Server, Power BI y pandas leen sin necesidad de indicar formato. Más detalles en Parámetros y opciones.