# Convert-DNSDebugLogFile

LLMS index: [llms.txt](/v1.1.0.0/llms.txt)

---

<!-- This file is auto-generated using PlatyPS + HUGO Workflow automation. Avoid editing directly! Original Front-Matter:
date: 2026-05-25
document type: cmdlet
external help file: DNSServer.DebugLogParser-Help.xml
flagTranslation: Primary
HelpUri: https://github.com/AndiBellstedt/DNSServer.DebugLogParser
Locale: en-US
Module Name: DNSServer.DebugLogParser
ms.date: 05.25.2026
PlatyPS schema version: 2024-05-01
title: Convert-DNSDebugLogFile
type: docs
-->

## SYNOPSIS

Trasforma i log di debug del server DNS di Windows in un formato CSV strutturato per analisi e reportistica.

## SYNTAX

### __AllParameterSets

```
Convert-DNSDebugLogFile [-InputFile] <string[]> [[-OutputFile] <string>] [[-Delimiter] <string>]
 [[-ComputerName] <string>] [[-OutputType] <string>] [[-ContextFilter] <string>]
 [[-InputCulture] <cultureinfo>] [[-OutputCulture] <cultureinfo>] [-SkipHeaderValidation]
 [-RemoveSourceFile] [-CompressOutput] [-WhatIf] [-Confirm] [<CommonParameters>]
```

## ALIASES

Questo cmdlet ha i seguenti alias,

## DESCRIPTION

Converte i file di log di debug del server DNS di Windows in dati CSV strutturati che possono essere analizzati in Excel, Power BI, database SQL o strumenti SIEM. Progettato per analisi di sicurezza, monitoraggio delle prestazioni, risoluzione dei problemi e reportistica di conformità.

Il cmdlet analizza tutti i 17 campi dei log di debug DNS inclusi data/ora, protocollo, IP client, tipo di query, nomi di dominio, codici di risposta, flag, informazioni sugli eventi e nome del computer. Genera un output CSV strutturato con un riepilogo statistico opzionale che aggrega l’attività per client, protocollo e tipo di query.

CARATTERISTICHE PRINCIPALI:
- Parsing ad alte prestazioni ottimizzato per file di grandi dimensioni (oltre 100MB)
- Delimitatore CSV personalizzabile (default: punto e virgola)
- Riepiloghi statistici opzionali con metriche aggregate
- Filtro di contesto (PACKET, EVENT, Note) per focalizzarsi su tipi specifici di voci di log
- Parsing e formattazione delle date sensibili alla cultura per server internazionali
- Supporto pipeline per elaborazione batch di più file
- Compressione opzionale dei file di output (formato ZIP)
- Rimozione automatica opzionale dei file sorgente dopo l’elaborazione
- Validazione dell’intestazione per garantire l’integrità dei dati

FORMATO DI OUTPUT:
La colonna ComputerName è sempre inclusa alla fine di ogni record. Se il parametro -ComputerName non è specificato, la colonna sarà vuota. Questo garantisce una struttura di output coerente per scenari di consolidamento multi-server.

PRESTAZIONI:
Ottimizzato usando StreamReader/StreamWriter con buffer da 64KB, operazioni su stringhe invece di regex, generazione manuale del CSV e raccolta efficiente delle statistiche basata su hashtable.

COMPATIBILITÀ:
- PowerShell 5.1+ (edizioni Desktop e Core)
- Windows Server 2016+
- Formati di log DNS Server da 2012 R2 fino al 2025

## EXAMPLES

### ESEMPIO 1

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log"
```

Converte il log di debug DNS usando le impostazioni predefinite (sia file dati che statistici con delimitatore punto e virgola).  
Output: C:\Logs\dns.csv e C:\Logs\dns_statistic.csv

### ESEMPIO 2

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType CSV
```

Genera solo il file dati senza statistiche.  
Output: C:\Logs\dns.csv

### ESEMPIO 3

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputType Statistic
```

Genera solo il file delle statistiche con metriche aggregate.  
Output: C:\Logs\dns_statistic.csv

### ESEMPIO 4

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputFile "C:\Output\parsed.csv"
```

Converte il log in una posizione di output personalizzata.  
Output: C:\Output\parsed.csv

### ESEMPIO 5

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -Delimiter "," -ComputerName "DNS01" -OutputType Both
```

Converte con delimitatore virgola e aggiunge la colonna ComputerName con valore "DNS01".  
Output: C:\Logs\dns.csv e C:\Logs\dns_statistic.csv con colonna ComputerName

### ESEMPIO 6

```powershell
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -OutputType Both
```

Elabora in batch più file di log di debug DNS tramite pipeline.  
Output: Per ogni file .log genera file .csv e _statistic.csv

### ESEMPIO 7

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -CompressOutput
```

Converte e comprime l’output in un archivio ZIP.  
Output: C:\Logs\dns.zip (contenente dns.csv e dns_statistic.csv)

### ESEMPIO 8

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -RemoveSourceFile -Verbose
```

Converte il log e rimuove il file sorgente dopo l’elaborazione riuscita.  
L’output Verbose conferma la rimozione del file.

### ESEMPIO 9

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -InputCulture 'de-DE' -OutputCulture 'en-US'
```

Analizza il formato data tedesco (GG.MM.AAAA) e produce output in formato USA (MM/GG/AAAA).  
Usa quando si elaborano log da server con impostazioni regionali diverse.

### ESEMPIO 10

```powershell
PS C:\> Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -ContextFilter 'Packet'
```

Converte solo le voci di pacchetto query/risposta DNS, escludendo EVENT e Note.  
Usa per focalizzare l’analisi sul traffico DNS effettivo.

### ESEMPIO 11

```powershell
PS C:\> Get-ChildItem "C:\Logs\*.log" | Convert-DNSDebugLogFile -RemoveSourceFile -CompressOutput
```

Archiviazione automatica dei log: elabora tutti i log, comprime l’output e rimuove i file sorgente.  
Ideale per pipeline di elaborazione log pianificate.

## PARAMETERS

### -CompressOutput

Comprimi i file CSV di output in un archivio ZIP dopo la creazione.

Crea un file .zip contenente il/i file CSV generato/i, quindi rimuove il/i CSV non compressi.  
Il file ZIP viene creato nella stessa directory del CSV di output con lo stesso nome base.

Vantaggi:
- Riduce significativamente lo spazio su disco (i file CSV si comprimono tipicamente oltre il 90%)
- Semplifica la gestione e l’archiviazione dei file
- Adatto per l’archiviazione a lungo termine

Esempio: l’input 'dns.log' genera 'dns.csv' compresso in 'dns.zip', quindi 'dns.csv' viene rimosso.

```yaml
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -ComputerName

Specifica il valore per la colonna ComputerName nell’output CSV.  
La colonna ComputerName è sempre presente nell’output; se questo parametro non è specificato, la colonna sarà vuota.

Usalo quando consolidi log da più server DNS per identificare il server di origine nei dataset combinati.

Nota: NON è un parametro di remoting.  
Il cmdlet elabora solo file locali.

```yaml
Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Server
- DNSServer
- HostName
ParameterSets:
- Name: (All)
  Position: 3
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -Confirm

Richiede conferma prima di eseguire il cmdlet.

Se specificato, chiede conferma prima di:  
- Elaborare ogni file di log di debug DNS  
- Rimuovere i file sorgente (quando specificato -RemoveSourceFile)  
- Sovrascrivere file di output esistenti

Utile per elaborazioni interattive quando vuoi controllare quali file vengono processati.

```yaml
Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- cf
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -ContextFilter

Filtra quali tipi di voci di log includere nell’output.

I log di debug DNS contengono diversi tipi di contesto:  
- PACKET: informazioni su pacchetti query e risposta DNS (dati principali)  
- EVENT: eventi del server DNS (es. "Il server DNS è stato avviato.")  
- Note: note diagnostiche e avvisi (es. errori di socket, stati interni)

Valori validi:  
- 'All': include tutti i tipi di contesto (default)  
- 'Packet': include solo le voci PACKET (query/risposte DNS)  
- 'Event': include solo le voci EVENT (eventi server)  
- 'Note': include solo le voci Note (informazioni diagnostiche)

Default: All

Nota: filtrando su 'Event' o 'Note', solo le colonne DateTime, ThreadId, Context e Information conterranno dati.  
Le altre colonne (Protocol, ClientIP, ecc.) saranno vuote.

```yaml
Type: String
DefaultValue: All
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 5
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -Delimiter

Specifica il carattere delimitatore per l’output CSV.

Default: punto e virgola (;)

Alternative comuni: virgola (,), tab (`t), pipe (|)

Usa il punto e virgola nelle regioni dove la virgola è il separatore decimale (Europa).  
Usa la virgola per strumenti CSV standard e database che si aspettano valori separati da virgola.

```yaml
Type: String
DefaultValue: ;
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 2
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -InputCulture

Specifica la cultura/locale da usare per il parsing dei valori data/ora nel log di debug DNS.

I log di debug DNS usano il formato data della locale Windows sul server dove il log è stato generato.  
Usa questo parametro quando elabori log da server con impostazioni regionali diverse.

Default: cultura corrente

Esempi comuni:  
- 'de-DE' o 'de-AT': formato tedesco (GG.MM.AAAA o GG/MM/AAAA)  
- 'en-US': formato USA (MM/GG/AAAA con AM/PM)  
- 'en-GB': formato UK (GG/MM/AAAA con orario 24h)  
- 'sv-SE': formato svedese/ISO (AAAA-MM-GG)

```yaml
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 6
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -InputFile

Specifica il percorso del file di log di debug DNS da analizzare.  
Supporta array per elaborare più file.

Accetta input dalla pipeline da Get-ChildItem o altri cmdlet che producono file.

```yaml
Type: String[]
DefaultValue: ''
SupportsWildcards: false
Aliases:
- FullName
- FilePath
- InputPath
- File
- Path
ParameterSets:
- Name: (All)
  Position: 0
  IsRequired: true
  ValueFromPipeline: true
  ValueFromPipelineByPropertyName: true
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -OutputCulture

Specifica la cultura/locale da usare per formattare i valori data/ora nei file CSV di output.

Controlla come i valori DateTime sono scritti nel CSV.  
Usa questo parametro quando i file CSV saranno consumati da applicazioni o sistemi con impostazioni regionali specifiche.

Default: cultura corrente

Esempi comuni:  
- 'en-US': formato USA (MM/GG/AAAA)  
- 'de-DE': formato tedesco (GG.MM.AAAA)  
- 'sv-SE' o InvariantCulture: formato ISO (AAAA-MM-GG) per massima compatibilità

```yaml
Type: CultureInfo
DefaultValue: '[System.Globalization.CultureInfo]::CurrentCulture'
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 7
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -OutputFile

Specifica il percorso del file CSV di output.  
Se non specificato, usa il nome del file di input con estensione .csv nella stessa directory del file di input.

Importante: deve essere un percorso file, non una directory.  
Se vuoi usare la directory del file di input con un nome personalizzato, specifica il percorso completo incluso il nome file.

```yaml
Type: String
DefaultValue: ''
SupportsWildcards: false
Aliases:
- Output
- Destination
- OutFile
- OutputPath
ParameterSets:
- Name: (All)
  Position: 1
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -OutputType

Specifica il tipo di output da generare.

Valori validi:  
- 'CSV': genera solo il file dati con tutte le voci di log analizzate (default)  
- 'Statistic': genera solo il file delle statistiche con metriche aggregate  
- 'Both': genera sia i file dati che quelli statistici

Default: Both

Le statistiche forniscono conteggi aggregati per IP client, protocollo, direzione e tipo di query, insieme all’intervallo di date per ogni combinazione unica.

```yaml
Type: String
DefaultValue: Both
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: 4
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -RemoveSourceFile

Rimuove il file di log di debug DNS sorgente dopo l’elaborazione riuscita.

Usa questo per pipeline di elaborazione log automatizzate o gestione dello spazio su disco.  
Il file sorgente viene rimosso solo se l’elaborazione si completa con successo e tutti i file di output sono creati.

Sicurezza: non può essere usato con -SkipHeaderValidation per evitare la cancellazione accidentale di file non validi.

Attenzione: i file sorgente vengono eliminati in modo permanente.  
Assicurati che i file di output siano validi prima di usare questa opzione.

```yaml
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -SkipHeaderValidation

Salta il controllo di validazione dell’intestazione del log di debug DNS.

Di default, il cmdlet verifica che i file di input abbiano un’intestazione valida del log di debug DNS Server.  
Usa questo switch per elaborare file senza validazione, utile per:  
- Formati di log modificati o personalizzati  
- Risoluzione di problemi di validazione  
- Log non standard o pre-elaborati

Attenzione: può causare errori di elaborazione se il file non è un log DNS valido.

```yaml
Type: SwitchParameter
DefaultValue: False
SupportsWildcards: false
Aliases: []
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### -WhatIf

Mostra cosa succederebbe se il cmdlet venisse eseguito.  
Il cmdlet non viene eseguito.

Se specificato, mostra informazioni dettagliate sulle operazioni che verrebbero eseguite senza effettuarle realmente.  
Utile per:  
- Anteprima dei file che verrebbero processati  
- Verifica dei percorsi dei file di output prima dell’elaborazione  
- Test di script prima dell’esecuzione in produzione

```yaml
Type: SwitchParameter
DefaultValue: ''
SupportsWildcards: false
Aliases:
- wi
ParameterSets:
- Name: (All)
  Position: Named
  IsRequired: false
  ValueFromPipeline: false
  ValueFromPipelineByPropertyName: false
  ValueFromRemainingArguments: false
DontShow: false
AcceptedValues: []
HelpMessage: ''
```

### CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per maggiori informazioni, vedi [about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

### System.String[]

## NOTES

Versione : 1.3.0.1  
Autore   : Andi Bellstedt, Copilot  
Data     : 2026-01-23  
Parole chiave : Microsoft Windows Server, DNSServer, DNS, DebugLog, LogParser

## RELATED LINKS

- [github.com/AndiBellstedt/DNSServer.DebugLogParser](https://github.com/AndiBellstedt/DNSServer.DebugLogParser)
