Parametri e Opzioni

Cosa cambia effettivamente ogni opzione di Convert-DNSDebugLogFile, quando serve, e le trappole in cui è facile cadere.

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.

OpzioneDefaultCambiala quando
-InputFile(obbligatorio)sempre
-OutputFilepercorso input con .csvvuoi l’output da un’altra parte
-Delimiter;il tuo consumatore si aspetta virgola, tab o pipe
-ComputerNamevuotounisci log da più server
-OutputTypeBothvuoi solo dati o solo riepiloghi
-ContextFilterAllti interessa solo il traffico DNS reale
-InputCulturecultura correnteil log proviene da un server con altra localizzazione
-OutputCulturecultura correnteuna macchina leggerà il CSV
-NoDetailsParsingspentoconta più la velocità che i dettagli dei pacchetti
-CompressOutputspentoarchivi o trasferisci i risultati
-RemoveSourceFilespentopulizia programmata, e ti fidi dell’output
-SkipHeaderValidationspentoil 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.

-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

Impostalo sempre quando più server alimentano un dataset — altrimenti non potrai sapere da quale DC proviene una riga.

-OutputType

  • CSV — solo file dati
  • Statistic — solo i due file aggregati, niente dati a livello di riga
  • Both — 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
ValoreContiene
Alltutto (default)
Packetquery e risposte DNS — i dati che la maggior parte delle analisi richiede
Eventeventi server, es. “Il server DNS è stato avviato”
Notenote 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'
CulturaFormato timestamp log
de-DEDD.MM.YYYY HH:MM:SS
en-USM/D/YYYY H:MM:SS AM/PM
en-GBDD/MM/YYYY HH:MM:SS
sv-SEYYYY-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

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.

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.