S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

PowerShellで.NETのクラスを使う

Windows7
ちょっと.NETのAPIの確認をしたいだけなので、スクリプトでSystem.Net.Dnsクラスのメソッドを呼び出したかったり。

アセンブリのロード

usingに相当

PS > [System.Reflection.Assembly]::LoadWithPartialName("System.Net.Dns")

GetHostNameでホスト名を表示

「[クラス]::メソッド」という書き方で記述する。クラスは基本的にフルネーム。

PS > [System.Console]::WriteLine("Computer Name : " + [System.Net.Dns]::GetHostName())
Computer Name : HOGEHOGE

GetHostByAddressでIPHostEntryオブジェクトを取得

$変数名はPowerShellと同じ。

PS > $hostentry = [System.Net.Dns]::GetHostByAddress("xxx.yyy.zzz.111")

GetHostByAddressの戻り値の型を表示

$hostentry(IPHostEntryオブジェクト)のメソッドから取得。

PS > [System.Console]::WriteLine("GetHostByAddress Return Type : " + $hostentry.getType())
GetHostByAddress Return Type : System.Net.IPHostEntry

IPHostEntryオブジェクトからホスト名を取得

$hostentry(IPHostEntryオブジェクト)のメンバから取得。

PS > [System.Console]::WriteLine("Computer Name :"  + $hostentry.HostName)
Computer Name : FUGAFUGA

スクリプトファイルの実行

スクリプトファイル(.ps1)を実行する場合は、PowerShellを管理者モードで開いて、スクリプト実行ポリシーを設定(Set-ExecutionPolicy)してから実行する必要がある。


■参考
Windows PowerShell 活用編(5) .NET Framework利用の基礎 (1/3):CodeZine
Windows PowerShellコマンド&スクリプティング入門(後編) − @IT