# Solución de problemas

> Síntomas que probablemente encontrarás al convertir registros de depuración DNS, qué los causa y cómo solucionarlos.

---

LLMS index: [llms.txt](/llms.txt)

---

## "El archivo no es un archivo válido de registro de depuración DNS"

La verificación del encabezado rechazó la entrada. Normalmente la ruta está simplemente equivocada: un archivo `.log` en la misma carpeta que no es el registro de depuración DNS, o un archivo que solo contiene un encabezado rotado.

Sigue estos pasos:

1. Abre el archivo. Un registro de depuración DNS comienza con una línea de encabezado como `Message logging started at …` y continúa con entradas de consultas con marcas de tiempo.
2. Confirma que el registro de depuración DNS está realmente habilitado y escribiendo en la ruta que esperas:

   ```powershell
   Get-DnsServerDiagnostics | Select-Object Enable, LogFilePath, MaxMBFileSize
   ```

3. Si el archivo es genuinamente un registro DNS pero el encabezado es inusual — editado a mano, prefiltrado, una exportación personalizada — omite la verificación:

   ```powershell
   Convert-DNSDebugLogFile -InputFile "C:\Logs\odd.log" -SkipHeaderValidation
   ```

Mantén la validación habilitada en todos los demás casos. Ten en cuenta que `-SkipHeaderValidation` no puede combinarse con `-RemoveSourceFile`, por lo que un archivo no verificado nunca puede ser eliminado por la conversión.

## El archivo de salida está vacío o tiene muchas menos filas de las esperadas

Verifica, en este orden:

- **¿El registro contiene entradas de consultas?** Un registro recién rotado puede contener solo un encabezado si aún no ocurrieron consultas.
- **¿Se está usando un `-ContextFilter`?** `-ContextFilter Packet` elimina por diseño las entradas `Event` y `Note`. Si filtraste a `Event` o `Note`, la mayoría de las columnas también estarán vacías — esos tipos de entradas solo contienen `DateTime`, `ThreadId`, `Context` e `Information`.
- **¿Estaba activo el registro fuente?** Un archivo que el servidor DNS sigue escribiendo puede cambiar durante la conversión; las entradas más nuevas pueden faltar y el último registro puede estar truncado. Convierte un registro rotado y cerrado cuando necesites una salida completa.
- **¿Está el archivo corrupto o truncado?** Revisa el final del registro en busca de una línea medio escrita.

## Las fechas están mal, desplazadas o el día y el mes están intercambiados

El registro fue escrito por un servidor con una configuración regional de Windows diferente a la sesión que hace la conversión. `20.01.2026` y `01/20/2026` describen el mismo momento, pero solo si ambos lados coinciden en el formato.

```powershell
# el registro provino de un servidor alemán
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
```

Establece `-InputCulture` explícitamente en trabajos programados en lugar de confiar en la cultura de la cuenta que los ejecuta. Si la salida debe ser legible por máquina, añade `-OutputCulture 'sv-SE'`. Más detalles en [Parámetros y Opciones](../03-parameters-and-options/).

## Todo termina en una columna después de la importación

Error de delimitador. El módulo escribe `;` por defecto; tu consumidor esperaba `,` (o viceversa).

Vuelve a ejecutar la conversión con el delimitador que quiere el consumidor:

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter ","
```

…o indica al importador qué delimitador usa el archivo — en Excel vía **Datos → Desde texto/CSV**, en PowerShell vía `Import-Csv -Delimiter ';'`.

## "Acceso denegado"

- El directorio del registro DNS normalmente requiere derechos administrativos. Inicia PowerShell elevado, o ejecuta la tarea programada con una cuenta que tenga acceso.
- Verifica también el acceso de escritura al directorio de salida, no solo el acceso de lectura al registro.
- Para rutas SMB/UNC: una tarea que corre como `SYSTEM` se autentica en la red como la **cuenta del equipo**. Otorga permisos de compartición y NTFS a esa cuenta de equipo (o al grupo `Domain Controllers`), o usa una cuenta de servicio dedicada.
- Si `-RemoveSourceFile` falla al final de una ejecución exitosa, la cuenta puede leer el registro pero no eliminarlo.

## El procesamiento es muy lento

1. Primero el disco — la conversión depende de I/O. Un volumen ocupado o una ruta de red lenta dominan el tiempo de ejecución.
2. Usa `-NoDetailsParsing` si no necesitas el JSON con detalles del paquete; en registros con muchos detalles esto ahorra entre 30 y 50 %.
3. Usa `-ContextFilter Packet` para escribir menos.
4. Divide registros enormes con la rotación de registros del servidor DNS en lugar de convertir un archivo enorme.
5. Considera una exclusión antivirus para el directorio del registro.

Más en [Rendimiento](../04-performance/).

## La salida comprimida es más grande de lo esperado

Los registros con contenido muy diverso — muchos dominios únicos, muchos clientes distintos — se comprimen menos que los repetitivos. Eso es normal. ZIP aún suele lograr una reducción sustancial; si no es así, verifica si la columna `Details` está inflando el archivo y si realmente la necesitas.

## Las estadísticas no coinciden con lo esperado

- Confirma que usaste `-OutputType Both` o `-OutputType Statistic`. Con `-OutputType CSV`, no se generan archivos de estadísticas.
- `Count` es un total, no un conteo distinto. Un cliente que pide el mismo nombre 500 veces aporta 500. Esta es la causa más frecuente de "ese número no puede ser correcto".
- Las estadísticas se agrupan por día. Un registro que abarca dos días produce filas para ambos.
- Si `ComputerName` está vacío en los archivos de estadísticas, no se estableció `-ComputerName` durante la conversión.

## La tarea programada funciona de forma interactiva pero no como tarea

Casi siempre es una de tres cosas:

- **Módulo no encontrado.** `SYSTEM` con `-NoProfile` solo ve rutas de módulos a nivel máquina. Instala el módulo a nivel máquina o añade un `Import-Module DNSServer.DebugLogParser` explícito en la acción de la tarea.
- **Cultura incorrecta.** La configuración regional de la cuenta de la tarea difiere de la tuya. Establece `-InputCulture` y `-OutputCulture` explícitamente.
- **Política de ejecución o script no firmado.** Ajusta el `-ExecutionPolicy` de la tarea para que coincida con tu política de firma, y desbloquea archivos copiados de otro lugar.

Ejecuta manualmente la línea de comando exacta de la tarea en el mismo contexto (por ejemplo con PsExec como `SYSTEM`) para reproducir el problema.

## Reportar un problema

Si nada de esto ayuda:

1. Actualiza a la última versión del módulo y vuelve a intentarlo.
2. Busca en los [issues de GitHub](https://github.com/AndiBellstedt/DNSServer.DebugLogParser/issues) el mismo síntoma.
3. Recopila los diagnósticos:

   ```powershell
   $PSVersionTable
   Get-Module DNSServer.DebugLogParser -ListAvailable | Select-Object Name, Version, Path
   Get-Culture
   ```

   además del comando exacto que ejecutaste, el mensaje de error completo incluyendo el seguimiento de pila, y — si puedes compartirlo — un pequeño extracto anonimizado del registro que reproduzca el problema.
4. Abre un nuevo issue con esa información.
