PowerShellでホスト名をIPアドレスに変換する方法|Resolve-DnsNameの使い方を徹底解説

ネットワーク管理やシステム運用の業務では、ホスト名をIPアドレスに変換する作業が頻繁に発生します。Windows環境では PowerShellの「Resolve-DnsName」コマンド を使うことで、この変換を簡単に実行できます。

本記事では、「Resolve-DnsName」コマンドの基本的な使い方から、具体的な応用方法まで詳しく解説 します。DNSの基本知識に触れながら、ネットワークトラブルシューティングにも役立つ活用方法を紹介するので、ぜひ参考にしてください。


PowerShellの「Resolve-DnsName」とは?

Resolve-DnsNameの概要

「Resolve-DnsName」は、PowerShell 3.0以降で利用できるDNSクエリを実行するためのコマンドです。Windowsの「nslookup」コマンドと同様に、ホスト名をIPアドレスへ変換するために使用します。

また、Aレコード(IPv4)、AAAAレコード(IPv6)、CNAMEレコード、MXレコードなどの情報も取得可能 であり、DNSに関する詳細なデータを取得できる点が特徴です。


基本的な使い方

ホスト名をIPアドレスに変換する

最もシンプルな使用方法は、以下のコマンドです。

Resolve-DnsName example.com

このコマンドを実行すると、example.comIPアドレス情報が取得できます。

実行結果(例)

Name       : example.com
QueryType : A
TTL : 300
Section : Answer
IP4Address : 93.184.216.34

ここでは、example.com のAレコード(IPv4アドレス)として 93.184.216.34 を取得 しました。


オプションを使った応用例

「Resolve-DnsName」には、さまざまなオプションが用意されています。ここでは、特に便利なものを紹介します。

1. IPv6アドレスを取得する

IPv4ではなく、IPv6アドレス(AAAAレコード) を取得したい場合は、以下のように -Type オプションを指定します。

Resolve-DnsName example.com -Type AAAA

実行結果(例):

Name       : example.com
QueryType : AAAA
TTL : 300
Section : Answer
IP6Address : 2606:2800:220:1:248:1893:25c8:1946

このように、IPv6アドレスを取得 できます。


2. DNSキャッシュをバイパスして最新の情報を取得する

DNSキャッシュが影響している場合、新しいレコードが反映されないことがあります。その場合は、-NoCache オプションを付けると、最新の情報を取得できます。

Resolve-DnsName example.com -NoCache

3. 特定のDNSサーバーを指定して問い合わせる

通常はシステムのデフォルトDNSサーバーに問い合わせますが、別のDNSサーバーを指定することも可能です。たとえば、GoogleのパブリックDNS(8.8.8.8)を指定する場合は、以下のように入力します。

Resolve-DnsName example.com -Server 8.8.8.8

これは、ネットワークトラブルシューティング の際に役立ちます。異なるDNSサーバーを使って名前解決の結果を比較することで、DNSの問題を特定しやすくなります。


nslookupとの違い

「Resolve-DnsName」とWindowsの「nslookup」コマンドは、どちらもDNSクエリを実行するためのツールですが、以下のような違いがあります。

比較項目Resolve-DnsNamenslookup
使いやすさPowerShellネイティブコマンドプロンプト向け
出力のフォーマット構造化されたオブジェクトテキストベース
詳細情報MX, CNAME, SRV 取得可能基本的な情報のみ
スクリプト利用PowerShellスクリプトに適用扱いにくい

「Resolve-DnsName」は PowerShellスクリプトの一部として使いやすく、オブジェクト形式で出力されるため、データの加工が容易 です。


スクリプトでの活用例

「Resolve-DnsName」をスクリプトで活用することで、一括処理やログの取得が可能になります。

1. 一覧のホスト名をIPアドレスに変換

複数のホスト名をリスト化して、それぞれのIPアドレスを取得するスクリプトを作成できます。

$hostnames = @("example.com", "google.com", "microsoft.com")

foreach ($host in $hostnames) {
$result = Resolve-DnsName $host
Write-Output "$host : $($result.IP4Address)"
}

このスクリプトを実行すると、指定した複数のホスト名のIPアドレスを取得できます。


2. DNSの問題をチェックするスクリプト

DNSの応答速度を確認する簡単なスクリプトを作成することも可能です。

$start = Get-Date
Resolve-DnsName example.com -Server 8.8.8.8
$end = Get-Date
$duration = $end - $start
Write-Output "DNS解決にかかった時間: $($duration.TotalMilliseconds) ミリ秒"

これにより、DNSの応答速度を測定し、遅延があるかどうかを確認 できます。


まとめ

「Resolve-DnsName」は、PowerShellを活用してDNSクエリを実行し、ホスト名をIPアドレスに変換するための強力なコマンドです。基本的な名前解決だけでなく、特定のDNSサーバーを指定したり、スクリプトで活用することも可能 です。

本記事で紹介したポイント

  • 「Resolve-DnsName」は、ホスト名の名前解決に最適なPowerShellコマンド
  • IPv4、IPv6、MX、CNAMEレコードの取得が可能
  • 特定のDNSサーバーを指定して問い合わせできる
  • スクリプトと組み合わせて大量のホストのIPアドレスを取得可能
  • nslookupよりも柔軟で詳細な情報を取得できる

ネットワーク管理やトラブルシューティングの際にぜひ活用してみてください。

タイトルとURLをコピーしました