PowerShell DNS名前解決

Powershellスクリプトの中でDNSサーバを指定して名前を解決したいとき。

Resolve-DnsNameコマンドレットが使用できる。

例えば、www.google.co.jp の名前をDNSサーバ 8.8.8.8に問い合わせて解決したいときは、次のようになる。

[powershell$] Resolve-DnsName www.google.co.jp -DnsServer 8.8.8.8

この実行結果が上手く動き、満足していました。

ですが、ある日、トラブルが上がって来ました。

パソコンによっては、思っていたのと違う結果となるという話です。

上記のResolve-DnsNameコマンドを実行したら、142.250.199.99が回答として帰ってくる想定なのですが、あるパソコンでは、10.10.10.1と帰ってきたとのこと。

パソコンのOSはというと、Windows10で同じ。

実際のパソコンでコマンドを実行すると、確かに10.10.10.1と回答があります。

なぜだろうと、調べてみたところ、パソコンのhostsファイルにこんな記載がありました。

10.10.10.1 www.google.co.jp

これだ!

と思いましたが、それとともに疑問が一つ。

Resolve-DnsNameコマンドに -DnsServer オプションを指定して、DNS名前解決しているのに、どうしてhostsファイルの方が優先されるのか。と。

調べたところ、Resolve-DnsNameコマンドには、DNS名前解決の結果のみを回答することを指定する -DnsOnlyオプションがありました。

このオプションをつけて、

[powershell$] Resolve-DnsName www.google.co.jp -DnsServer 8.8.8.8 -DnsOnly

としたところ、(hostsファイルは参照せず)DNS名前解決の結果を回答してくれるようになりました。

一件落着です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です