Parametri e Opzioni
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /it/docs/03-parameters-and-options/index.md.
Questa pagina spiega le opzioni in modo semplice e nell’ordine in cui tipicamente ti serviranno. È una guida, non una specifica — la lista autorevole e sempre aggiornata dei parametri si trova nel riferimento comandi e in:
Get-Help Convert-DNSDebugLogFile -Full
La versione breve
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
Questa singola riga ti dà già un comportamento sensato: sia i file dati che quelli statistici, delimitatore punto e virgola, formato data della tua macchina, validazione dell’intestazione attiva, log sorgente intatto. Tutto il resto è fine-tuning.
| Opzione | Default | Cambiala quando |
|---|---|---|
-InputFile | (obbligatorio) | sempre |
-OutputFile | percorso input con .csv | vuoi l’output da un’altra parte |
-Delimiter | ; | il tuo consumatore si aspetta virgola, tab o pipe |
-ComputerName | vuoto | unisci log da più server |
-OutputType | Both | vuoi solo dati o solo riepiloghi |
-ContextFilter | All | ti interessa solo il traffico DNS reale |
-InputCulture | cultura corrente | il log proviene da un server con altra localizzazione |
-OutputCulture | cultura corrente | una macchina leggerà il CSV |
-NoDetailsParsing | spento | conta più la velocità che i dettagli dei pacchetti |
-CompressOutput | spento | archivi o trasferisci i risultati |
-RemoveSourceFile | spento | pulizia programmata, e ti fidi dell’output |
-SkipHeaderValidation | spento | il file è valido ma l’intestazione è insolita |
Input e output
-InputFile
Percorso del log da convertire. Accetta un array e input da pipeline — ecco perché funziona così:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" | Convert-DNSDebugLogFile
Get-ChildItem emette oggetti con la proprietà FullName, e -InputFile la accetta per nome proprietà (gli alias includono FullName, Path, FilePath). Non serve ForEach-Object.
Funzionano sia percorsi locali che SMB/UNC:
Convert-DNSDebugLogFile -InputFile "\\dc01\C$\Administration\Logs\DNSServer\dns.log"
Il comando può anche aprire un log che il DNS Server ha attualmente aperto. Vedi log attivi più avanti prima di affidarti a questo.
-OutputFile
Se non lo specifichi, il CSV viene creato accanto al file di input, stesso nome base, estensione .csv. Se lo usi, controlli la destinazione.
-OutputFile "D:\Processed\" non significa “scrivi in questa cartella”. Dai il percorso completo incluso il nome file: -OutputFile "D:\Processed\dns_data.csv".
Questo significa anche che -OutputFile non ha senso se passi molti file in pipeline — ogni conversione scriverebbe nello stesso file. Per esecuzioni batch, lascialo spento e lascia che ogni log produca il suo CSV.
-Delimiter
Il default è punto e virgola, perché nelle localizzazioni dove la virgola è il separatore decimale è quello che Excel si aspetta. Usa -Delimiter "," per strumenti e database che assumono valori separati da virgola classici, o -Delimiter "`t" per tabulazione.
Qualunque valore scegli, usa lo stesso lato importazione. Un disallineamento è la causa numero uno di “tutto finito in una colonna”.
Etichettatura e filtraggio
-ComputerName
Compila la colonna ComputerName. La colonna esiste comunque; questa opzione le assegna un valore.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ComputerName $env:COMPUTERNAME
Nonostante il nome (e gli alias -Server / -DNSServer / -HostName), -ComputerName non si connette a nulla. Non c’è WinRM, né esecuzione remota. Scrive solo un’etichetta nell’output. Per leggere un log remoto, punta -InputFile a un percorso UNC.
Impostalo sempre quando più server alimentano un dataset — altrimenti non potrai sapere da quale DC proviene una riga.
-OutputType
CSV— solo file datiStatistic— solo i due file aggregati, niente dati a livello di rigaBoth— tutti e tre i file (default)
Statistic è l’opzione veloce e leggera quando ti servono solo tendenze giornaliere. CSV è giusto quando un sistema a valle fa la sua aggregazione.
-ContextFilter
Un log di debug DNS mescola traffico query reale con chiacchiere interne al server. -ContextFilter decide cosa rimane nell’output.
# solo traffico DNS reale
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet
# traffico più eventi server, ma niente note diagnostiche
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter Packet, Event
| Valore | Contiene |
|---|---|
All | tutto (default) |
Packet | query e risposte DNS — i dati che la maggior parte delle analisi richiede |
Event | eventi server, es. “Il server DNS è stato avviato” |
Note | note diagnostiche e avvisi, es. errori di socket |
Altri tipi di contesto (DSPoll, Init, Lookup, Recurse, Remote, Tombstone) appaiono sotto All.
Filtrare solo su Event o Note popola solo DateTime, ThreadId, Context e Information — le colonne protocollo restano vuote perché quelle voci non contengono quell’informazione.
-ContextFilter Packet è la scelta usuale per pipeline di sicurezza e reportistica: elimina il rumore e riduce sensibilmente l’output.
Log internazionali
Il DNS Server scrive i timestamp nella localizzazione Windows della macchina su cui gira. Un DC tedesco scrive 20.01.2026 23:00:16; un server USA scrive 1/20/2026 11:00:16 PM. Se la localizzazione della tua workstation è diversa da quella del server, il parsing va storto — o peggio, scambia silenziosamente giorno e mese.
-InputCulture
Dì al parser quale localizzazione usa il log sorgente:
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns-berlin.log" -InputCulture 'de-DE'
| Cultura | Formato timestamp log |
|---|---|
de-DE | DD.MM.YYYY HH:MM:SS |
en-US | M/D/YYYY H:MM:SS AM/PM |
en-GB | DD/MM/YYYY HH:MM:SS |
sv-SE | YYYY-MM-DD HH:MM:SS |
Il default è la cultura della sessione che esegue il comando. In un ambiente con localizzazioni miste, impostalo esplicitamente invece di affidarti al default — e ricorda che un’attività schedulata che gira come SYSTEM potrebbe non avere la cultura con cui hai testato interattivamente.
-OutputCulture
Controlla come i timestamp vengono scritti nel CSV:
# output in stile ISO che SQL Server, Power BI e pandas capiscono tutti
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
# stesso effetto, cultura invariata esplicita
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" `
-OutputCulture ([System.Globalization.CultureInfo]::InvariantCulture)
Regola pratica: se un umano apre il file in Excel, usa la cultura locale. Se lo legge una macchina, usa sv-SE o cultura invariata e non preoccuparti delle impostazioni regionali all’importazione.
I due parametri sono indipendenti — puoi leggere un log svedese e scrivere output formattato USA.
Velocità e spazio
-NoDetailsParsing
Se il DNS Server registra dettagli completi dei pacchetti, il parser trasforma ogni blocco di dettaglio in JSON nella colonna Details. È utile, ma è anche la parte più costosa e gonfia il CSV.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -NoDetailsParsing
La colonna resta presente ma vuota; la riga di intestazione dettaglio TCP/UDP è ancora disponibile in Information. Su log ricchi di blocchi dettaglio questo può ridurre il tempo di elaborazione del 30–50 %. Usalo quando bastano le informazioni a livello di query.
-CompressOutput
Comprimi i file CSV generati e cancella quelli non compressi. dns.log produce dns.zip invece di dns.csv.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
CSV di questo tipo tipicamente si comprimono del 90% o più, quindi è un risparmio di spazio quasi gratuito per archivi e trasferimenti di file in rete.
-RemoveSourceFile
Cancella il file .log sorgente dopo una conversione riuscita — il log viene rimosso solo se tutti i file di output sono stati creati.
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput -RemoveSourceFile
Qui non c’è cestino. Verifica il tuo output su log reali prima di abilitare questa opzione in un lavoro schedulato, e non puntarla mai a un file log attivo.
Il comando rifiuta volutamente di combinare -RemoveSourceFile con -SkipHeaderValidation, così non puoi cancellare un file che non è mai stato confermato come log DNS.
Reti di sicurezza
-SkipHeaderValidation
Di default il comando verifica che il file sia davvero un log di debug DNS Server prima di analizzarlo. Questo evita l’errore classico di puntare il lavoro alla cartella sbagliata.
Disattivalo solo per casi davvero insoliti: log modificati a mano, estratti pre-filtrati, formati personalizzati. Lascialo attivo altrove — è economico e ti protegge da errori di battitura e da montagne di righe inutili.
-WhatIf e -Confirm
Il comando supporta entrambi. -WhatIf è il modo giusto per vedere cosa toccherebbe un nuovo lavoro batch:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Convert-DNSDebugLogFile -RemoveSourceFile -WhatIf
-Confirm chiede conferma prima di processare ogni file, prima di cancellare un file sorgente e prima di sovrascrivere output esistenti.
Log attivi
Convert-DNSDebugLogFile può leggere un file che il DNS Server ha aperto. Utile per uno sguardo ad hoc a cosa succede in questo momento.
Un log attivo cambia mentre viene letto. L’output può mancare voci scritte durante la conversione e l’ultima riga può essere troncata. Ripetere l’esecuzione dà risultati diversi.
Per output riproducibili, abilita il rollover dei log sul server DNS e converti solo file chiusi e ruotati — per esempio saltando l’ultimo più recente:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Sort-Object LastWriteTime -Descending |
Select-Object -Skip 1 |
Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME
Metterlo insieme
Una tipica invocazione di produzione su un domain controller:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Sort-Object LastWriteTime -Descending |
Select-Object -Skip 1 |
Convert-DNSDebugLogFile `
-ComputerName $env:COMPUTERNAME `
-Delimiter ';' `
-OutputType Both `
-ContextFilter Packet `
-OutputCulture 'sv-SE' `
-CompressOutput
Si legge così: prendi ogni log ruotato tranne quello attivo, tieni solo il traffico DNS, etichetta ogni riga con il nome del server, scrivi timestamp leggibili da macchina, e lascia archivi compressi. La versione completa per attività schedulate e Group Policy è nell’esempio di raccolta guidata da GPO.