Monday, March 31, 2008

この記事は2008/02/19にわんくまブログで書いたものです。

今日は、PowerShellでホスト名とIPアドレスを相互変換する関数を作ってみました。

まずはIPアドレスからホスト名を取得する関数です

Get-HostByName.ps1

#===============================================================================
# Get-HostByName: IPアドレスからホスト名を取得する
#
# 使用例
#   PS > Get-HostByName 10.84.5.10
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
[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://hiros-dot.net/)
#===============================================================================
[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アドレスのみを取得しています。

Monday, March 31, 2008 3:37:08 AM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: