PowerShellでnslookupを使う方法|Resolve-DnsNameの使い方や、特定のオブジェクトのみフィルタリングする方法を解説
目次
スポンサードリンク
nslookupとは?
nslookup コマンドは、ホスト名とIPアドレスの変換(名前解決)を行うDNS関連のコマンドです。Windowsではコマンドプロンプトでも利用可能ですが、PowerShellからも同様に実行可能です。
基本的な構文は以下の通りです。
nslookup [ホスト名] [DNSサーバーのIPアドレス]
以下はPowerShellでnslookupコマンドを実行した例です。当ブログのホスト名を、GoogleのパブリックDNSサーバー(8.8.8.8)に問い合せしています。
PS C:\Users\username> nslookup uchy.me 8.8.8.8
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
名前: uchy.me
Address: 49.212.235.185
PowerShellにおける代替手段(Resolve-DnsName)
PowerShellには nslookup に相当する Resolve-DnsNameコマンド が用意されています。 基本的な構文は以下の通りです。
Resolve-DnsName [ホスト名] [-Server DNSサーバーのIPアドレス]
このコマンドはnslookupコマンドよりもより構造化された情報を返し、スクリプト内で扱いやすい形式になっています。PowerShellスクリプトでのDNS処理にはこちらがおすすめです。
PS C:\Users\username> Resolve-DnsName uchy.me -Server 8.8.8.8
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
uchy.me A 300 Answer 49.212.235.185
特定のオブジェクトのみを取り出す方法
例えば、Resolve-DnsName の結果から IPAddress だけを抜き出したい場合、 Select-Object や Where-Object を使ってフィルタできます。以下のように書くと、目的のIPAdress部分の情報だけを取得できます。
PS C:\Users\username> Resolve-DnsName uchy.me -Server 8.8.8.8 | Where-Object { $_.IPAddress } | Select-Object -ExpandProperty IPAddress
49.212.235.185
特定のレコードタイプのみを取り出す方法
-Type パラメータを使って、特定のレコードタイプのみ指定して取得することができます。下記例では TXT レコードのみにフィルタリングして情報を取得しています。
PS C:\Users\username> Resolve-DnsName uchy.me -Server 8.8.8.8 -Type TXT
Name Type TTL Section Strings
---- ---- --- ------- -------
uchy.me TXT 3600 Answer {v=spf1 a:www3445.sakura.ne.jp mx ~all}
uchy.me TXT 3600 Answer {google-site-verification=zwHRK84j_vItO2M
PKNUZPIqff6-d6iopFY5l9O-DfXE}
まとめ
PowerShellでは nslookup を直接使えますが、ネイティブの Resolve-DnsName コマンドレットの方がスクリプト化や柔軟性に優れています。用途に応じて使い分けるのがポイントです。
コマンドプロンプトのポケットリファレンス:Windows11対応版
Windows環境で開発やシステム管理を行うエンジニアにとって、コマンドプロンプトの知識は非常に重要なスキルセットです。こちらの書籍は初心者にもわかりやすく網羅的です。手元に置いておきたい一冊です。
PowerShellの基礎を一通り学べるおすすめ書籍