今日は、PowerShellでホスト名とIPアドレスを相互変換する関数を作ってみました。
まずはIPアドレスからホスト名を取得する関数です
Get-HostByName.ps1
#===============================================================================
# Get-HostByName: IPアドレスからホスト名を取得する
#
# 使用例
# PS > Get-HostByName 10.84.5.10
#
# copyright HIRO's.NET(http://hiro.wankuma.com/)
#===============================================================================
[void][reflection.assembly]::LoadWithPartialName("System.Net")
function global:Get-HostByName
{
Param ([string]$IPAddress)
$hostEntry = New-Object System.Net.IPHostEntry
$hostEntry = [System.Net.Dns]::GetHostEntry($IPAddress)
return $hostEntry.HostName
}
ポイント
IPアドレスからホスト名を取得するのに、System.Net.DnsのGetHostEntryメソッドを使用しています。
HostEntry情報を取得したら、その中のHostNameプロパティを参照し、ホスト名を取得します。
次にホスト名からIPアドレスを取得する関数です。
Get-HostByAddress.ps1
#===============================================================================
# Get-HostByAddress: ホスト名からIPアドレスを取得する
#
# 使用例
# PS > Get-HostByAddress "www.yahoo.co.jp"
#
# copyright HIRO's.NET(http://hiro.wankuma.com/)
#===============================================================================
[void][reflection.assembly]::LoadWithPartialName("System.Net")
function global:Get-HostByAddress
{
Param ([string]$HostName)
$hostEntry = New-Object System.Net.IPHostEntry
$hostEntry = [System.Net.Dns]::GetHostEntry($HostName)
return $hostEntry.AddressList[0].IPAddressToString
}
ポイント
こちらもSystem.Net.DnsのGetHostEntryメソッドを使用しています。
HostEntry情報を取得したら、その中のAddressList(配列で返されます)を取得し、IPAddressToString でIPアドレスのみを取得しています。