Resolve-DnsName

Wykonuje zapytanie DNS dla nazwy lub adresu IP.

Resolve-DnsName to powershellowy odpowiednik nslookup, tyle że zwraca obiekty .NET zamiast tekstu, który musisz parsować regexem o trzeciej w nocy. Cmdlet odpytuje DNS o podaną nazwę albo adres IP i wyciąga z odpowiedzi konkretne typy rekordów: A, AAAA, MX, TXT, CNAME, NS, SOA czy PTR. Używasz go, gdy chcesz sprawdzić, na jaki adres wskazuje domena, gdzie ląduje poczta albo czy ktoś poprawnie ustawił rekord weryfikacyjny. Bonus: skoro wynik to obiekty, możesz je filtrować przez Where-Object i Select-Object bez bólu.

Składnia i najważniejsze opcje

Resolve-DnsName [-Name] [-Type ] [-Server ]

  • -Name — nazwa DNS lub adres IP do sprawdzenia (parametr pozycyjny, możesz pominąć słowo -Name).
  • -Type — typ rekordu: A, AAAA, MX, TXT, CNAME, NS, SOA, PTR albo ALL. Domyślnie zwraca A i AAAA.
  • -Server — odpytaj konkretny serwer DNS (np. 8.8.8.8) zamiast tego z konfiguracji systemu.
  • -DnsOnly — pyta wyłącznie przez DNS, pomija LLMNR i NetBIOS.
  • -NoHostsFile — ignoruje lokalny plik hosts, czyli te ręczne wpisy, o których wszyscy zapominają.
  • -CacheOnly — odpowiada tylko z lokalnego cache resolvera, bez ruszania sieci.
  • -TcpOnly — wymusza zapytanie po TCP zamiast standardowego UDP.
  • -QuickTimeout — skraca czas oczekiwania, gdy serwer milczy.

Przykłady użycia

  • Resolve-DnsName learningzone.pl — najprostszy lookup, zwraca rekordy A i AAAA domeny.
  • Resolve-DnsName -Name gmail.com -Type MX — pokazuje serwery pocztowe wraz z ich priorytetami.
  • Resolve-DnsName -Name learningzone.pl -Type TXT — wyciąga rekordy TXT, w tym SPF i klucze weryfikacyjne.
  • Resolve-DnsName -Name google.com -Server 1.1.1.1 -DnsOnly — sprawdza, co odpowie Cloudflare, z pominięciem lokalnych mechanizmów.
  • Resolve-DnsName -Name 8.8.8.8 -Type PTR — lookup odwrotny, czyli z adresu IP na nazwę.

Częste błędy i pułapki

Najczęstsza zagwozdka: dostajesz wynik, którego się nie spodziewasz, bo odpowiedź przyszła z lokalnego pliku hosts albo z cache. Jeśli chcesz prawdy prosto z serwera, dorzuć -DnsOnly -NoHostsFile. Pamiętaj też, że -Type domyślnie zwraca tylko A/AAAA — jak nie widzisz rekordu MX czy TXT, to nie znaczy, że go nie ma, tylko że o niego nie zapytałeś.

Druga sprawa: Resolve-DnsName jest częścią modułu DnsClient i istnieje wyłącznie na Windowsie. Na Linuksie czy macOS go nie uświadczysz, tam masz dig albo host. W PowerShell Core na Windowsie działa normalnie. Jeszcze jedno: cmdlet rzuca błąd, gdy nazwa się nie rozwiązuje. Jeśli skryptujesz, opakuj wywołanie w try/catch albo dodaj -ErrorAction SilentlyContinue, bo inaczej pojedynczy zdechły rekord wywróci Ci całą pętlę.

Powiązane komendy: nslookup, dig, host, Test-NetConnection, Get-DnsClientServerAddress, Clear-DnsClientCache.