Formati di Output
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /it/docs/02-output-formats/index.md.
Convert-DNSDebugLogFile produce fino a tre file per ogni log di input:
| File | Contenuto | Creato quando |
|---|---|---|
<name>.csv | Una riga per ogni voce di log analizzata | -OutputType CSV o Both |
<name>_Statistic.csv | Conteggio giornaliero dei record per contesto | -OutputType Statistic o Both |
<name>_PacketStatistic.csv | Conteggio giornaliero delle query per client, protocollo, direzione e tipo di record | -OutputType Statistic o Both |
Both è il valore predefinito. L’output viene salvato accanto al file di input a meno che non imposti -OutputFile.
I file di esempio collegati in questa pagina sono risultati di conversioni reali, non simulazioni. Scaricane uno e aprilo in Excel prima di decidere come progettare la pipeline.
Il file dati CSV
Esempio di output:
| Locale | Colonna Dettagli | File |
|---|---|---|
| en-US | non popolata | WithComputerName, NoComputerName |
| de-DE | non popolata | WithComputerName, NoComputerName |
| de-DE | popolata | WithComputerName, NoComputerName |
Due righe da una conversione reale — una query DNS e una nota interna al server:
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
Colonne
Sempre 18 colonne, sempre in questo ordine:
| # | Colonna | Significato | Uso tipico |
|---|---|---|---|
| 1 | DateTime | Timestamp della voce | Filtraggio temporale, unione con altri log |
| 2 | ThreadId | Thread di lavoro del server DNS | Raramente necessario; utile per correlare problemi interni al server |
| 3 | Context | Tipo di voce: Packet, Event, Note, DSPoll, Init, Lookup, Recurse, Remote, Tombstone | Primo filtro da applicare — Packet è il traffico DNS vero e proprio |
| 4 | PacketId | Identificatore interno del pacchetto | Abbinare una query alla sua risposta |
| 5 | Protocol | UDP o TCP | Picchi TCP possono indicare risposte grandi o trasferimenti di zona |
| 6 | Direction | Rcv (query ricevuta) o Snd (server ha risposto) | Separare volume richieste da volume risposte |
| 7 | ClientIP | Indirizzo dell’host che ha fatto la query | Analisi dei top talker, definizione dell’incidente |
| 8 | Xid | ID transazione DNS (esadecimale) | Abbinare richiesta e risposta |
| 9 | Type | Query o Response | |
| 10 | Opcode | Standard, Notify, Update, Unknown | Separare aggiornamenti dinamici e notifiche di zona dalle normali ricerche |
| 11 | FlagsHex | Flag header grezzi (esadecimale) | Per analisi approfondite del protocollo |
| 12 | FlagsChar | Flag decodificati: Authoritative, Truncated, RecursionDesired, RecursionAvailable | Versione leggibile dei flag sopra |
| 13 | ResponseCode | NOERROR, NXDOMAIN, SERVFAIL, … | Report errori, ricerca di fallimenti di risoluzione |
| 14 | QuestionType | Tipo di record: A, AAAA, MX, PTR, TXT, … | Il volume di TXT è un classico indicatore di tunneling |
| 15 | QuestionName | Nome interrogato come FQDN normale | Matching threat-intel, report top-domain |
| 16 | Information | Testo libero per voci Event / Note; per Packet la riga header dettagli TCP/UDP | Lettura messaggi server |
| 17 | Details | Rappresentazione JSON di un blocco dettaglio Packet; vuoto altrimenti | Ispezione completa del pacchetto senza tornare al log grezzo |
| 18 | ComputerName | Server sorgente, da -ComputerName | Permette di attribuire dataset multi-server |
Due cose da tenere a mente:
- Non tutte le colonne sono compilate per ogni riga. Solo le voci
Packethanno IP client, nome della query e codice di risposta. Le righeNoteeEventcontengono il testo inInformatione lasciano vuote le colonne del protocollo. Progetta di conseguenza lo schema del database e i filtri della dashboard. ComputerNameè sempre l’ultima colonna, anche se non usi-ComputerName. In quel caso è semplicemente vuota. Questo mantiene l’impaginazione identica su tutti i server così puoi concatenare file da molti server DNS senza dover rimappare colonne.
La colonna Dettagli
I blocchi dettaglio appaiono solo se il server DNS è configurato per registrare i dettagli completi dei pacchetti. Quando esistono, il parser li converte in un singolo valore JSON così la riga resta 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": []
}
}
Analizzare questi blocchi richiede tempo e rende il CSV molto più grande. Se non ti servono, usa -NoDetailsParsing — la colonna resta presente ma vuota, e la conversione è più veloce. Vedi Performance.
I file di statistiche
Le statistiche sono aggregati giornalieri. Usale quando vuoi una tendenza o un riepilogo e non vuoi spostare l’intero set di record — sono di gran lunga più piccoli del file dati.
Statistiche per contesto (*_Statistic.csv)
Risponde a: quanta attività di che tipo è avvenuta ogni giorno?
Date;Context;Count;ComputerName
2026-01-20;Event;2;dc01
2026-01-20;Note;2;dc01
2026-01-20;Packet;12;dc01
| Colonna | Significato |
|---|---|
Date | Giorno, sempre yyyy-MM-dd |
Context | Nome del contesto (Packet, Event, Note, …) |
Count | Numero di record di quel contesto in quel giorno |
ComputerName | Server sorgente |
File di esempio: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Statistiche pacchetti (*_PacketStatistic.csv)
Risponde a: chi ha interrogato cosa, quanto spesso, ogni giorno?
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
| Colonna | Significato |
|---|---|
Date | Giorno, sempre yyyy-MM-dd |
ClientIP | Host che ha fatto la query |
Protocol | UDP o TCP |
Direction | Rcv o Snd |
QuestionType | Tipo di record DNS |
Count | Numero di pacchetti corrispondenti in quel giorno |
ComputerName | Server sorgente |
File di esempio: en-US WithComputerName, en-US NoComputerName, de-DE WithComputerName, de-DE NoComputerName
Count è il numero di record in quel gruppo giornaliero. Un client che ha chiesto lo stesso nome 500 volte contribuisce con 500, non 1. Se un numero sembra troppo alto, di solito è per questo motivo.
Delimitatore e formato data
Entrambi i tipi di output rispettano -Delimiter (default ;) e -OutputCulture. Per tutto ciò che sarà importato da una macchina, scrivi timestamp in formato ISO-like:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
Questo produce 2026-01-20 23:00:16, che SQL Server, Power BI e pandas leggono senza bisogno di indicazioni sul formato. Dettagli in Parametri e Opzioni.