PowerShell: Resolver um nome DNS com Resolve-DnsName

Windows Server 2022Windows Server 2025

Neste tutorial, irei explicar como utilizar o PowerShell para realizar a resolução de nomes DNS utilizando o comando Resolve-DnsName.

Esta ferramenta integrada do Windows facilita a consulta de servidores DNS para obter informações sobre um domínio ou endereço IP. Seja para verificar a configuração do DNS, diagnosticar um problema de resolução ou simplesmente perceber o funcionamento do serviço, este comando é uma ferramenta indispensável para os administradores de sistemas e de redes.

Veremos como utilizá-lo, interpretar os resultados e tirar partido das suas diferentes opções.

Para começar, para realizar uma resolução “simples”, digite o seguinte comando:

Resolve-DnsName rdr-it.com

Como se pode observar, por defeito, o cmdlet devolve os registos DNS A e AAAA do nome de domínio que foi passado como parâmetro, utilizando o(s) servidor(es) DNS configurado(s) no adaptador de rede do Windows.

Caso pretenda utilizar um servidor DNS específico, é possível passar o parâmetro -Server com o endereço IP do servidor DNS a utilizar.

Resolve-DnsName rdr-it.com -Server 1.1.1.1

Este parâmetro é particularmente útil quando se gere a zona DNS de um domínio num servidor interno e externo (na Internet) para verificar um registo.

Também é possível escolher o tipo de registo DNS pretendido através do parâmetro -type.

Resolve-DnsName rdr-it.com -Type MX

Também pode resolver vários nomes DNS com um único comando:

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

Tabela de opções comuns do Resolve-DnsName:

OptionDescriptionExemple
-TypeEspecifica o tipo de registo DNS a consultar (A, AAAA, MX, TXT, CNAME, NS, etc.)Resolve-DnsName microsoft.com -Type MX
-ServerDefine o servidor DNS a utilizar para a consulta.Resolve-DnsName microsoft.com -Server 8.8.8.8
-DnsOnlyLimita o pedido a uma resolução DNS simples, sem recorrer ao NetBIOS ou LLMNR.Resolve-DnsName microsoft.com -DnsOnly
-NamePermite especificar o nome de domínio (configuração padrão, normalmente implícita).Resolve-DnsName -Name microsoft.com
-NoHostsFileIgnora o ficheiro hosts durante a resolução.Resolve-DnsName microsoft.com -NoHostsFile
-QuickTimeoutReduz o tempo de resposta (útil para a resolução rápida de problemas)Resolve-DnsName microsoft.com -QuickTimeout

Documentação oficial : https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname?view=windowsserver2025-ps

Em síntese, o comando Resolve-DnsName do PowerShell é uma ferramenta simples, mas poderosa, para consultar e diagnosticar a resolução de DNS. Representa uma melhoria significativa em relação ao antigo comando nslookup, oferecendo resultados mais abrangentes e estruturados. Seja para testar um domínio, identificar um problema de configuração ou simplesmente verificar a funcionalidade dos seus servidores DNS, este comando é indispensável para uma utilização diária. E, como se trata de um comando PowerShell, é muito fácil automatizar estas verificações em scripts personalizados, poupando tempo e simplificando a gestão dos seus ambientes.

Por fim, aqui fica um exemplo de um 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
Arquiteto de Sistemas | MCSE: Infraestrutura Essencial
Especialista em infraestruturas de TI com mais de 15 anos de experiência na área. Atualmente, como Gestor de Projetos de Sistemas e Redes e especialista em Segurança de Sistemas de Informação (SSI), utilizo a minha expertise para garantir a fiabilidade e a segurança dos ambientes tecnológicos.

Deixe um comentário