PowerShell: risolvere un nome DNS con Resolve-DnsName

In questo tutorial spiegherò come utilizzare PowerShell per eseguire la risoluzione dei nomi DNS utilizzando il comando Resolve-DnsName.

Questo strumento integrato in Windows semplifica l’interrogazione dei server DNS per ottenere informazioni su un dominio o un indirizzo IP. Che si tratti di verificare la configurazione DNS, diagnosticare un problema di risoluzione o semplicemente comprendere il funzionamento del servizio, questo comando è uno strumento indispensabile per gli amministratori di sistema e di rete.

Vedremo come utilizzarlo, interpretare i risultati e sfruttare le sue diverse opzioni.

Per iniziare, per eseguire una risoluzione “semplice”, immettere il seguente comando:

Resolve-DnsName rdr-it.com

Come si può vedere, per impostazione predefinita il cmdlet restituisce i record DNS A e AAAA del nome di dominio passato come parametro utilizzando i server DNS configurati sulla scheda di rete Windows.

Se si desidera utilizzare un server DNS specifico, è possibile passare il parametro -Server con l’indirizzo IP del server DNS da utilizzare.

Resolve-DnsName rdr-it.com -Server 1.1.1.1

Questo parametro è particolarmente utile quando si gestisce la zona DNS di un dominio su un server interno ed esterno (su Internet) per verificare un record.

È anche possibile scegliere il tipo di record DNS desiderato utilizzando il parametro -type.

Resolve-DnsName rdr-it.com -Type MX

È anche possibile risolvere più nomi DNS con un singolo comando:

"rdr-it.com","git.rdr-it.com" | Resolve-DnsName -Type A -Server 1.1.1.1

Tabella delle opzioni comuni di Resolve-DnsName:

Option Description Exemple
-Type Specifica il tipo di record DNS da interrogare (A, AAAA, MX, TXT, CNAME, NS, ecc.) Resolve-DnsName microsoft.com -Type MX
-Server Definisce il server DNS da utilizzare per la query Resolve-DnsName microsoft.com -Server 8.8.8.8
-DnsOnly Limita la richiesta a una semplice risoluzione DNS, senza ricorrere a NetBIOS o LLMNR. Resolve-DnsName microsoft.com -DnsOnly
-Name Consente di specificare il nome di dominio (impostazione predefinita, spesso implicita) Resolve-DnsName -Name microsoft.com
-NoHostsFile Ignora il file hosts durante la risoluzione Resolve-DnsName microsoft.com -NoHostsFile
-QuickTimeout Riduce i tempi di risposta (utile per una rapida risoluzione dei problemi) Resolve-DnsName microsoft.com -QuickTimeout

Documentazione ufficiale : https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname?view=windowsserver2025-ps

In sintesi, il comando PowerShell Resolve-DnsName è uno strumento semplice ma potente per interrogare e diagnosticare la risoluzione DNS. Rappresenta un miglioramento significativo rispetto al precedente comando nslookup, offrendo risultati più completi e strutturati. Che si tratti di testare un dominio, identificare un problema di configurazione o semplicemente verificare la funzionalità dei server DNS, questo comando è indispensabile per l’uso quotidiano. E poiché si tratta di PowerShell, è molto facile automatizzare questi controlli in script personalizzati, risparmiando tempo e semplificando la gestione degli ambienti.

Infine, ecco uno script di esempio:

# Liste des domaines à vérifier
$domains = @(
    "google.com",
    "microsoft.com",
    "rdr-it.com"
)

# Fichier de sortie CSV
$outputFile = "C:\Temp\Resolve-DnsName-Results.csv"

# Tableau pour stocker les résultats
$results = @()

foreach ($domain in $domains) {
    try {
        $records = Resolve-DnsName -Name $domain -Type A -ErrorAction Stop
        foreach ($record in $records) {
            $results += [PSCustomObject]@{
                Domaine    = $domain
                Type       = $record.Type
                IPAdresse  = $record.IPAddress
                TTL        = $record.TTL
                ServeurDNS = $record.NameHost
            }
        }
    }
    catch {
        $results += [PSCustomObject]@{
            Domaine    = $domain
            Type       = "Erreur"
            IPAdresse  = "Non résolu"
            TTL        = ""
            ServeurDNS = ""
        }
    }
}

# Exporter les résultats en CSV
$results | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8

Write-Host "Résultats enregistrés dans $outputFile"
Romain Drouche

Romain Drouche

Architecte Système | MCSE: Core Infrastructure

Expert en infrastructures IT avec plus de 15 ans d'expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d'Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

GHinM▶