Risoluzione dei problemi
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /it/docs/08-troubleshooting/index.md.
“Il file non è un file di log di debug DNS valido”
Il controllo dell’intestazione ha rifiutato l’input. Di solito il percorso è semplicemente errato — un file .log nella stessa cartella che non è il log di debug DNS, o un file che contiene solo un’intestazione ruotata.
Segui questi passaggi:
Apri il file. Un log di debug DNS inizia con una riga di intestazione come
Message logging started at …e continua con voci di query con timestamp.Conferma che il logging di debug DNS sia effettivamente abilitato e stia scrivendo nel percorso che ti aspetti:
Get-DnsServerDiagnostics | Select-Object Enable, LogFilePath, MaxMBFileSizeSe il file è davvero un log DNS ma l’intestazione è insolita — modificata a mano, pre-filtrata, esportazione personalizzata — bypassa il controllo:
Convert-DNSDebugLogFile -InputFile "C:\Logs\odd.log" -SkipHeaderValidation
Mantieni la validazione abilitata ovunque altrove. Nota che -SkipHeaderValidation non può essere combinato con -RemoveSourceFile, quindi un file non verificato non può mai essere cancellato dalla conversione.
Il file di output è vuoto o ha molte meno righe del previsto
Controlla, in questo ordine:
- Il log contiene voci di query? Un log appena ruotato può contenere solo un’intestazione se non sono ancora avvenute query.
- È in uso un
-ContextFilter?-ContextFilter Packetrimuove per design le vociEventeNote. Se hai filtrato suEventoNote, la maggior parte delle colonne sarà vuota — quei tipi di voci contengono soloDateTime,ThreadId,ContexteInformation. - Il log di origine era attivo? Un file su cui DNS Server sta ancora scrivendo può cambiare durante la conversione; le voci più recenti potrebbero mancare e l’ultima riga potrebbe essere troncata. Converti un log ruotato e chiuso quando ti serve un output completo.
- Il file è corrotto o troncato? Controlla la fine del log per una riga scritta a metà.
Le date sono sbagliate, spostate o giorno e mese sono invertiti
Il log è stato scritto da un server con una locale Windows diversa dalla sessione che esegue la conversione. 20.01.2026 e 01/20/2026 descrivono lo stesso momento, ma solo se entrambe le parti concordano sul formato.
# il log proviene da un server tedesco
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
Imposta -InputCulture esplicitamente nei lavori schedulati invece di affidarti alla cultura dell’account che li esegue. Se l’output deve essere leggibile dalla macchina, aggiungi -OutputCulture 'sv-SE'. Dettagli in Parametri e Opzioni.
Tutto finisce in una colonna dopo l’importazione
Disallineamento del delimitatore. Il modulo scrive ; per default; il tuo consumatore si aspettava , (o viceversa).
Riesegui la conversione con il delimitatore che vuole il consumatore:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter ","
…oppure indica all’importatore quale delimitatore usa il file — in Excel tramite Dati → Da testo/CSV, in PowerShell tramite Import-Csv -Delimiter ';'.
“Accesso negato”
- La cartella del log DNS di solito richiede diritti amministrativi. Avvia PowerShell elevato, o esegui il task schedulato con un account che ha accesso.
- Controlla anche i permessi di scrittura sulla cartella di output, non solo quelli di lettura sul log.
- Per percorsi SMB/UNC: un task in esecuzione come
SYSTEMsi autentica in rete come account computer. Concedi i diritti di condivisione e NTFS a quell’account computer (o al gruppoDomain Controllers), oppure usa un account di servizio dedicato. - Se
-RemoveSourceFilefallisce alla fine di una esecuzione altrimenti riuscita, l’account può leggere il log ma non cancellarlo.
L’elaborazione è molto lenta
- Prima il disco — la conversione è limitata dall’I/O. Un volume occupato o un percorso di rete lento dominano i tempi di esecuzione.
- Usa
-NoDetailsParsingse non ti serve il JSON dei dettagli pacchetto; su log con molti dettagli questo fa risparmiare il 30–50%. - Usa
-ContextFilter Packetper scrivere meno. - Suddividi log enormi con la rotazione del log di DNS Server invece di convertire un unico file gigantesco.
- Considera un’esclusione antivirus per la cartella dei log.
Di più in Prestazioni.
L’output compresso è più grande del previsto
I log con contenuti molto diversi — molti domini unici, molti client distinti — si comprimono meno di quelli ripetitivi. È normale. ZIP comunque di solito ottiene una riduzione sostanziale; se non succede, verifica se la colonna Details sta gonfiando il file e se ti serve davvero.
Le statistiche non corrispondono a quanto mi aspettavo
- Conferma di aver usato
-OutputType Botho-OutputType Statistic. Con-OutputType CSVnon viene scritto alcun file di statistiche. Countè un totale, non un conteggio distinto. Un client che chiede lo stesso nome 500 volte contribuisce con 500. Questa è la causa più frequente di “quel numero non può essere giusto”.- Le statistiche sono raggruppate per giorno. Un log che copre due giorni produce righe per entrambi.
- Se
ComputerNameè vuoto nei file di statistiche,-ComputerNamenon è stato impostato durante la conversione.
Il task schedulato funziona interattivamente ma non come task
Quasi sempre uno di questi tre casi:
- Modulo non trovato.
SYSTEMcon-NoProfilevede solo i percorsi dei moduli a livello macchina. Installa il modulo a livello macchina o aggiungi unImport-Module DNSServer.DebugLogParseresplicito all’azione del task. - Cultura sbagliata. La locale dell’account del task è diversa dalla tua. Imposta
-InputCulturee-OutputCultureesplicitamente. - Politica di esecuzione o script non firmato. Allinea il
-ExecutionPolicydel task alla tua politica di firma, e sblocca i file copiati da altre fonti.
Esegui manualmente la stessa riga di comando del task nello stesso contesto (per esempio con PsExec come SYSTEM) per riprodurlo.
Segnalare un problema
Se nulla di tutto questo aiuta:
Aggiorna all’ultima versione del modulo e riprova.
Cerca nei GitHub issues lo stesso sintomo.
Raccogli le diagnostiche:
$PSVersionTable Get-Module DNSServer.DebugLogParser -ListAvailable | Select-Object Name, Version, Path Get-Culturepiù il comando esatto che hai eseguito, il messaggio di errore completo incluso lo stack trace, e — se puoi condividerlo — un piccolo estratto anonimizzato del log che riproduce il problema.
Apri una nuova issue con queste informazioni.