Se você está gerenciando servidores web ou de e-mail, sabe o quanto esses servidores dependem de registros DNS adequadamente configurados. A falta de registros DNS pode causar todos os tipos de problemas, incluindo usuários que não conseguem encontrar seu site ou a não entrega de e-mails. É bom que exista o cmdlet Resolve-DnsName do PowerShell, e com ele, é possível automatizar a monitoração de registros DNS por meio de scripts.
O dia de um administrador já está cheio o suficiente, e verificar manualmente se os registros DNS podem ser resolvidos adequadamente significa mais esforço manual.
Neste artigo, você aprenderá o que é e como usar o cmdlet Resolve-DnsName para consultar registros DNS com o PowerShell. Ao final deste artigo, você também terá aprendido como criar um script básico para gerar um relatório dos seus registros DNS indicados para monitoramento.
Pré-requisitos
Este artigo é um passo a passo, e se você planeja seguir os exemplos, precisará de:
- A computer running Windows 10 or above.
- Windows PowerShell 5.1 ou PowerShell 7.0
- A script editor such as Visual Studio Code, Atom, or Notepad++.
Resolve-DnsName: O resolvedor DNS do PowerShell
Há mais de uma maneira de realizar uma consulta DNS. O cmdlet Resolve-DnsName é semelhante à ferramenta de linha de comando nslookup que vem com o Windows, ou ao comando dig se você é um administrador Linux.
Monitoramento/relatório de registros DNS

objeto
exportar os resultados para um arquivo CSV

Consultando Diferentes Tipos de Registros DNS
Por padrão, o comando Resolve-DnsName
consulta os registros A e AAAA tipos de registros DNS. Por exemplo, se você procurar o registro DNS para gmail.com
usando o comando abaixo:
Como você pode ver abaixo, apenas os registros AAAA e A são retornados. Isso ocorre porque o tipo de registro DNS a ser pesquisado não foi especificado.

Agora, dado que todos sabemos que gmail.com é um domínio de e-mail usado pelo serviço de e-mail do Google, deve haver um registro MX associado a ele, certo? Bem, não é preciso assumir quando você pode confirmar usando este comando:
A saída mostrada na captura de tela abaixo exibe a lista de registros MX para gmail.com.

Para saber mais sobre os diferentes tipos de registros que podem ser usados com
Resolve-DnsName
, visite este link e procure pela tabela do parâmetro-Type
. Ou você pode consultar a ajuda do Resolve-DnsName usando o comandoget-help Resolve-DnsName
.
Usando Servidores Específicos para Consulta DNS
Resolve-DnsName
usa os endereços dos servidores DNS configurados no seu computador por padrão. No entanto, você também pode fazer com que o Resolve-DnsName
use um servidor DNS específico ao realizar pesquisas.
Por exemplo, se você deseja usar Google Public DNS para procurar registros, você pode fazer isso adicionando o parâmetro -Server
no seu comando, semelhante ao exemplo abaixo.
O resultado do comando acima seria semelhante ao mostrado na captura de tela abaixo.

Neste ponto, você pode estar se perguntando: “por que eu precisaria usar um servidor DNS diferente?”. Essa é uma pergunta válida. Se você tentar procurar o mesmo registro usando o servidor DNS padrão do seu computador ou outro servidor DNS, provavelmente obterá o mesmo resultado.
Pode haver muitas razões para usar diferentes servidores DNS com o Resolve-DnsName
. Algumas dessas razões podem incluir:
- Velicidade – Alguns servidores DNS podem ser mais rápidos que outros.
- Segurança – Alguns servidores DNS podem ter mais medidas de segurança do que outros para evitar sequestros e ataques.
- Disponibilidade de registros – Na maioria dos cenários, as organizações têm seus próprios servidores DNS internos que contêm as zonas e registros para nomes que só são resolvidos internamente. Neste caso, procurar um nome interno usando um servidor DNS público resultará em falha.

- Os servidores DNS não estão encaminhando solicitações – Algumas organizações não permitem encaminhamento de DNS. Usá-los para procurar registros DNS públicos resultará em falha.
- Resolução de problemas e testes – Quando seus servidores DNS favoritos não estão funcionando corretamente, você pode querer testar suas consultas usando um servidor DNS diferente.
Relatando registros DNS usando script PowerShell
Agora que você aprendeu o básico de como usar o cmdlet Resolve-DnsName
, nesta seção, você aprenderá a criar um script PowerShell para monitorar e relatar registros DNS. Você deve ser capaz de aplicar o conhecimento que adquiriu nas seções anteriores até agora na construção deste script.
Inicie seu editor de script de escolha e crie um novo arquivo chamado GetDnsRecord.ps1.
Definindo as variáveis
Primeiro, determine as variáveis a serem usadas. Essas variáveis incluirão o seguinte:
$NameList
– Esta variável conterá os nomes dos registros DNS que você deseja que seu script consulte$Serverlist
– Use esta variável para indicar os servidores DNS que serão usados pelo script para consultas.
Copie o código abaixo e cole-o no início do seu script.
Realizando consultas DNS
Em seguida, o código deve ser capaz de pesquisar o registro DNS de cada um dos nomes especificados. Neste caso, o loop foreach será usado para iterar a lista de registros e pesquisar cada nome usando Resolve-DnsName
.
A linha $FinalResult = @()
cria uma matriz vazia onde o resultado final será armazenado. Em seguida, usando o loop foreach, o PowerShell passa cada item na variável $NameList
para uma variável chamada $Name
.
Em cada iteração, a linha $tempObj = "" | Select-Object Name,IPAddress,Status,ErrorMessage
cria um objeto temporário com quatro propriedades para armazenar o resultado da consulta DNS bem-sucedida.
Em seguida, a declaração try{}
é usada para executar o comando Resolve-DnsName
para pesquisar os registros DNS A e preencher os valores de $tempObj
. Se a consulta DNS falhar, a declaração catch{}
captura o erro e o erro será incluído no objeto $tempObj
.
Ao final de cada iteração, o valor do objeto $tempObj
será anexado ao $FinalResult
. E uma vez que o último item no array $NameList
seja processado, o loop será encerrado. Em seguida, o valor de $FinalResult
será exibido.
Copie o código abaixo e cole-o no final do seu script. Não há necessidade de alterar nenhum valor.
Após salvar o script, execute-o no PowerShell chamando-o pelo nome GetDnsRecord.ps1. A demonstração abaixo mostra a saída.

Como você pode ver no resultado acima, a saída é um objeto que é útil se você quiser exportar os resultados para um arquivo como CSV usando o comando abaixo.
A saída CSV se pareceria com a seguinte.

Conclusão
Neste artigo, você aprendeu o básico de como usar o cmdlet Resolve-DnsName
para realizar a pesquisa de registros DNS no PowerShell. Você também aprendeu como Resolve-DnsName
é diferente de outras ferramentas como o utilitário nslookup.
Você viu como Resolve-DnsName
pode ser usado em um script para automatizar a pesquisa de registros DNS. Isso seria útil como uma ferramenta de monitoramento para garantir que você esteja ciente do status atual dos registros DNS que você supervisiona.
Usando suas habilidades de scripting do PowerShell, o script de relatório pode ser aprimorado ainda mais adicionando código para enviar o relatório por e-mail para destinatários especificados. Também pode ser modificado para criar uma saída HTML visualmente atraente.
No final, Resolve-DnsName
é uma excelente ferramenta para pesquisa de DNS, seja você a utilizando manualmente ou para automação em scripts. Agora você tem o conhecimento sobre como ela funciona, e cabe a você encontrar maneiras de usá-la como parte de suas tarefas de administração.
Leitura Adicional
- Google Public DNS
- De Volta ao Básico: Entendendo Objetos no PowerShell
- Exportar-Csv: O Caminho PowerShell para Tratar Arquivos CSV como Cidadãos de Primeira Classe
- PowerTip: Use o PowerShell para Obter Configurações de DNS
- Construindo relatórios HTML no PowerShell com ConvertTo-Html
- Como Criar um Relatório HTML com PowerShell