PowerShell: Resolver un nombre DNS con Resolve-DnsName

En este tutorial, explicaré cómo usar PowerShell para realizar la resolución de nombres DNS mediante el comando Resolve-DnsName.

Esta herramienta integrada de Windows facilita la consulta de servidores DNS para obtener información sobre un dominio o una dirección IP. Ya sea que necesite verificar su configuración de DNS, diagnosticar un problema de resolución o simplemente comprender el funcionamiento del servicio, este comando es una herramienta indispensable para los administradores de sistemas y redes.

Veremos cómo utilizarlo, interpretar los resultados y aprovechar sus diferentes opciones.

Para comenzar, para realizar una resolución “simple”, ingrese el siguiente comando:

Resolve-DnsName rdr-it.com

Como se puede ver, de manera predeterminada el cmdlet devuelve los registros DNS A y AAAA del nombre de dominio que se pasó como parámetro utilizando los servidores DNS configurados en el adaptador de red de Windows.

Si desea utilizar un servidor DNS en particular, es posible pasar el parámetro -Server con la dirección IP del servidor DNS a utilizar.

Resolve-DnsName rdr-it.com -Server 1.1.1.1

Este parámetro es particularmente útil cuando se administra la zona DNS de un dominio en un servidor interno y externo (en Internet) para verificar un registro.

También es posible elegir el tipo de registro DNS que desea utilizando el parámetro -type.

Resolve-DnsName rdr-it.com -Type MX

También puedes resolver varios nombres DNS con un solo comando:

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

Tabla de opciones comunes de Resolve-DnsName:

Option Description Exemple
-Type Especifica el tipo de registro DNS a consultar (A, AAAA, MX, TXT, CNAME, NS, etc.) Resolve-DnsName microsoft.com -Type MX
-Server Define el servidor DNS que se utilizará para la consulta. Resolve-DnsName microsoft.com -Server 8.8.8.8
-DnsOnly Limita la solicitud a una resolución de DNS simple, sin recurrir a NetBIOS o LLMNR. Resolve-DnsName microsoft.com -DnsOnly
-Name Permite especificar el nombre de dominio (configuración predeterminada, a menudo implícita) Resolve-DnsName -Name microsoft.com
-NoHostsFile Ignora el archivo de hosts durante la resolución Resolve-DnsName microsoft.com -NoHostsFile
-QuickTimeout Reduce el tiempo de respuesta (útil para la resolución rápida de problemas) Resolve-DnsName microsoft.com -QuickTimeout

Documentación oficial : https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname?view=windowsserver2025-ps

En resumen, el comando Resolve-DnsName de PowerShell es una herramienta sencilla pero potente para consultar y diagnosticar la resolución DNS. Representa una mejora significativa respecto al antiguo comando nslookup, ya que ofrece resultados más completos y estructurados. Ya sea para probar un dominio, identificar un problema de configuración o simplemente verificar la funcionalidad de sus servidores DNS, este comando es indispensable para el uso diario. Y, al ser PowerShell, es muy fácil automatizar estas comprobaciones en scripts personalizados, lo que ahorra tiempo y simplifica la gestión de sus entornos.

Finalmente, aquí hay un ejemplo de script:

# 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

Arquitecto de sistemas | MCSE: Core Infrastructure

Experto en infraestructuras de TI con más de 15 años de experiencia sobre el terreno. Actualmente, como jefe de proyectos de sistemas y redes y referente en seguridad de los sistemas de información (SSI), pongo mi experiencia al servicio de la fiabilidad y la seguridad de los entornos tecnológicos.

GHinM▶