.NETオブジェクトの利用方法
ここまでの説明で、アセンブリを読み込む方法について説明しました。
アセンブリは読み込んだだけでは使用することができないため、ここからはオブジェクトの利用方法について説明します。
.NETオブジェクトには、インスタンスを作成してから利用するものと、インスタンスを作成しなくても使用できるものとがあります。
.NETオブジェクトのインスタンス作成
インスタンスを作成してから利用するものは、New-Objectコマンドレットを使用して作成します。構文は下記の通りです。
変数 = New-Object -typename クラス名 [-argumentlist コンストラクタ引数]
または
変数 = New-Object クラス名(コンストラクタ引数)
例としてStreamReaderの.NETオブジェクトを作成します(StreamReaderはテキストファイルの読み込みに使用するクラスです)。
$reader = New-Object -typename System.IO.StreamReader -argumentlist "C:\Work\Test1.txt"
$reader = New-Object System.IO.StreamReader("C:\Work\Test1.txt")
これはVB.NETでは
Dim reader As New System.IO.StreamReader("C:\Work\Test1.txt")
C#では
System.IO.StreamReader reader = new System.IO.StreamReader(@"C:\Work\Test1.txt");
と同等です。
MSDNでStreamReaderクラスの説明を見ると、アセンブリ欄に「mscorlib(mscorlib.dll 内)」との記述があります。これがStreamReaderが含まれるアセンブリとなります。これはPowerShellでデフォルトで読み込まれるアセンブリであり、改めて読み込む必要のないアセンブリです。

インスタンスメソッドとインスタンスプロパティ
インスタンスの作成方法が分かったところで、インスタンスメソッドとインスタンスプロパティについて説明します。
インスタンス化して作成したオブジェクトのメソッドを「インスタンスメソッド」、プロパティを「インスタンスプロパティ」と呼びます。
インスタンスメソッドを使用するには
オブジェクト変数.メソッド(パラメータ)
とします。オブジェクト変数とメソッドの間にはドット(.)を置きます。
パラメータを複数指定する場合にはコンマ(,)で区切ります。また、パラメータを使用しない場合でもカッコ()は必要です。
下記は先ほど作成したStreamReaderオブジェクトのReadLineメソッドを使用する例です(ReadLineメソッドは指定したファイルから1行読み込みます)。
$stream.ReadLine()
また、インスタンスプロパティを使用するには
オブジェクト変数.プロパティ
とします。オブジェクト変数とプロパティの間にはドット(.)を置きます。
下記はStreamReaderオブジェクトのEndOfStreamプロパティを使用する例です(EndOfStreamはストリームの終端に達した場合にtrueとなります)。
$stream.EndOfStream
スタティックメソッドとスタティックプロパティ
オブジェクトの中にはインスタンスを作成しなくても利用可能な、「スタティックメソッド」、「スタティックプロパティ」があります。
Get-Memberコマンドレットでスイッチパラメータの-staticを使用するとスタティックメンバーを知ることができます。
例としてMathクラスのスタティックメンバーを調べるには
PS> [Math] | Get-Member -static
とします。

MemberType列に表示されている文字列(Method/Property)で、メソッドなのかプロパティなのかを知ることができます。
スタティックメソッドを使用するには
[クラス名]::メソッド名(パラメータ)
とします。クラス名は各括弧[]で括り、クラス名とパラメータの間はコロンを2つ続けて::を置きます。
パラメータを複数指定する場合にはコンマ(,)で区切ります。また、パラメータを使用しない場合でもカッコ()は必要です。
下記はMathクラスのPowメソッドを使用して2の3乗を求める例です
PS> [Math]::Pow(2,3)
スタティックプロパティを使用するには
[クラス名]::プロパティ名
とします。クラス名は角括弧[]で括り、クラス名とパラメータの間はコロンを2つ続けて::を置きます。
下記はMathクラスのPIプロパティにアクセスし円周率を取得します。
PS> [Math]::PI
まとめ
今回はPowerShellから.NET Frameworkのライブラリを利用する際の基本操作を学びました。
- アセンブリの読み込み方法
- 自作ライブラリの読み込み方法
- インスタンスメソッドとインスタンスプロパティの使用方法
- スタティックメソッドとスタティックプロパティの使用方法
は、いずれも.NET Frameworkライブラリを利用していく上での重要項目です。
.NET Frameworkの巨大なライブラリを利用すると、コマンドレットだけでは実現できない細やかな処理が可能となりますので、ぜひ身につけていただければと思います。
参考文献
- HIRO's.NET
- PowerShell from Japan!!
- 『Windows PowerShell ポケットリファレンス』 牟田口大介 著、技術評論社、2008年4月
- 『Windows PowerShell クックブック』 Lee Holmes 著、マイクロソフト株式会社ITプロ エバンジェリストチーム 監訳/監修、菅野良二 訳、オライリージャパン、2008年10月
