【PowerShell】ホスト名からIPアドレスに変換する方法(GetHostEntry)

PowerShell

この記事では、GetHostEntry メソッドを使用してホスト名からIPアドレスに変換する方法について詳しく説明します。

前回の記事:
PowerShell ローカルのホスト名(コンピューター名)を取得する方法

ホスト名からIPアドレスに変換する方法

ホスト名からIPアドレスに変換する方法はいくつかありますが、今回はSystem.Net.DnsクラスのGetHostEntry メソッドを使用する方法について説明します。

GetHostEntry とは?

GetHostEntryメソッドは、ホスト名またはIPアドレスを渡すと、IPアドレスまたはホスト名をオブジェクトとして返します。

GetHostEntry の使い方

GetHostEntryを使用するためには、以下のようにコマンドを入力します。

[System.Net.Dns]::GetHostEntry("hostname")

“hostname”の部分に取得したいホスト名を入力します。

GetHostEntryを使用した例

“example.com”をIPアドレスに変換する例です。

[System.Net.Dns]::GetHostEntry("example.com")

実行結果です。

GetHostEntry

AddressListの「2606:2800:21f:cb07:6820:80da:af6b:8b2c」(IPv6形式)、「93.184.215.14」(IPv4形式)がホスト名”example.com”に関連付けられたIPアドレスです。

IPアドレスのみを出力するには、以下のように記述します。

$hostEntry = [System.Net.Dns]::GetHostEntry("example.com")
$hostEntry.AddressList | ForEach-Object { Write-Output $_.IPAddressToString }

2行目の「ForEach-Object」で、AddressListをループさせ、ホスト名に関連付けられたすべてのIPアドレスが表示されます。

実行結果です。

GetHostEntry

スクリプトの例(すべてのIPアドレスを表示する)

引数にホスト名を指定すると、そのホスト名に関連付けられたすべてのIPアドレスを返すスクリプトの例です。

■GetIpAddress1.ps1

Param([string]$hostname)

# ホスト名からすべてのIPアドレスを取得
$hostEntry = [System.Net.Dns]::GetHostEntry($hostname)

# IPアドレスの表示
$hostEntry.AddressList | ForEach-Object { Write-Output $_.IPAddressToString }

以下のように引数にホスト名を指定し、実行します。

.\GetIpAddress1.ps1 example.com

実行結果です。

GetHostEntry

スクリプトの例(IPv4とIPv6を別々に表示する)

引数にホスト名を指定すると、そのホスト名のIPv4とIPv6の両方のIPアドレスを返すスクリプトの例です。

■GetIpAddress2.ps1

Param([string]$hostname)

# ホスト名からIPv4とIPv6の両方のIPアドレスを取得
$hostEntry = [System.Net.Dns]::GetHostEntry($hostname)

# IPv4アドレスの表示
Write-Host "IPv4 Address:"
$hostEntry.AddressList | Where-Object { $_.AddressFamily -eq 'InterNetwork' } | ForEach-Object {
Write-Host $_.IPAddressToString
}

# IPv6アドレスの表示
Write-Host "IPv6 Address:"
$hostEntry.AddressList | Where-Object { $_.AddressFamily -eq 'InterNetworkV6' } | ForEach-Object {
Write-Host $_.IPAddressToString
}

 

以下のように引数にホスト名を指定し、実行します。

.\GetIpAddress2.ps1 example.com

実行結果です。

GetHostEntry

まとめ

今回は、System.Net.DnsクラスのGetHostEntry メソッドを使用してホスト名からIPアドレスに変換する方法について説明しました。

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