PowerShell で名前解決する方法はいろいろありますが、PowerShell らしいのは Resolve-DnsName コマンドレットです。
RR も -Type で指定もできるので、nslookup の代わりにも使えます。
PS C:\> Resolve-DnsName www.microsoft.com | fl * QueryType : CNAME Server : www.microsoft.com-c.edgekey.net NameHost : www.microsoft.com-c.edgekey.net Name : www.microsoft.com Type : CNAME CharacterSet : Unicode Section : Answer DataLength : 8 TTL : 2 QueryType : CNAME Server : www.microsoft.com-c.edgekey.net.globalredir.akadns.net NameHost : www.microsoft.com-c.edgekey.net.globalredir.akadns.net Name : www.microsoft.com-c.edgekey.net Type : CNAME CharacterSet : Unicode Section : Answer DataLength : 8 TTL : 2 QueryType : CNAME Server : e10088.dspb.akamaiedge.net NameHost : e10088.dspb.akamaiedge.net Name : www.microsoft.com-c.edgekey.net.globalredir.akadns.net Type : CNAME CharacterSet : Unicode Section : Answer DataLength : 8 TTL : 2 Address : 2600:140b:12:592::2768 IPAddress : 2600:140b:12:592::2768 QueryType : AAAA IP6Address : 2600:140b:12:592::2768 Name : e10088.dspb.akamaiedge.net Type : AAAA CharacterSet : Unicode Section : Answer DataLength : 16 TTL : 2 Address : 2600:140b:12:595::2768 IPAddress : 2600:140b:12:595::2768 QueryType : AAAA IP6Address : 2600:140b:12:595::2768 Name : e10088.dspb.akamaiedge.net Type : AAAA CharacterSet : Unicode Section : Answer DataLength : 16 TTL : 2 Address : 2600:140b:12:593::2768 IPAddress : 2600:140b:12:593::2768 QueryType : AAAA IP6Address : 2600:140b:12:593::2768 Name : e10088.dspb.akamaiedge.net Type : AAAA CharacterSet : Unicode Section : Answer DataLength : 16 TTL : 2 Address : 60.254.135.30 IPAddress : 60.254.135.30 QueryType : A IP4Address : 60.254.135.30 Name : e10088.dspb.akamaiedge.net Type : A CharacterSet : Unicode Section : Answer DataLength : 4 TTL : 2 |
残念ながら Windows 7 / Windows Server 2008 R2 以前の環境では、Resolve-DnsName が使えません。
そうかといって、nslookup の出力をごにょごにょするのもスマートではありませんね。
そんな時は .NET
Framework 頼りです。
### 名前解決 # アセンブリのロード Add-Type -AssemblyName System.Net # ホストエントリーを得る [array]$HostEntries = [System.Net.DNS]::GetHostEntry("www.microsoft.com") # IPv4 アドレスのエントリーだけにする [array]$IPv4HostEntries = $HostEntries.AddressList | ?{$_.AddressFamily -eq "InterNetwork"} # IPv4 アドレス $IPv4Address = ($IPv4HostEntries[0]).IPAddressToString echo $IPv4Address |
ちょいと手順は多いのですが、.NET Framework 2.0 以降であれば使えます。
FQDN ではなく、IP アドレスを渡しても名前解決できるので、正引き/逆引きとも可能です。
ちなみに、IPv6 アドレスを得る場合は
"InterNetwork" のかわりに "InterNetworkV6" で引っぱれば OK です。
ホストエントリーも面白いプロパティを持っているので、他にも使い手ありそうですね。
Copyright © MURA All rights reserved.