[PowerShell V2 CTP3]PowerShellでC#

どうもご無沙汰しております。HIROです。 

今回は Add-Type コマンドレットを使用して、 PowerShellでC#のクラス直接利用する方法を紹介します。

Add-Type コマンドレットは V2 から搭載されるもので、他の言語のソースを直接PowerShell上で展開して使用できるようにします。

今回はC#のクラスをPowerShell上で文字列として定義し、利用してみたいと思います。

まずはヒア文字列を使用して変数 $source にC#のSampleClassを代入します。

PS> $source = @"
public class SampleClass{
    public static string GetHello(string Name)
    {
        return "Hello " + Name;
    }
    public string GetHello2(string Name)
    {
        return "Hello Hello" + Name;
    }
}
"@

このクラスに

このクラスには GetHelloとGetHello2の2つのメソッドがあります。

早速ですが、Add-Typeコマンドレットで、このクラスをPowerShellに登録しましょう。

Add-Type -TypeDefinition $Source

とします。

登録したクラスの利用ですがスタティックメソッドは

[クラス名]::メソッド

の書式で使用することができます。

Get-Helloメソッドは次のようにして使用できます。
(::と入力した後[Tab]キーを押すとタブ補完が働きます。)

PS> [SampleClass]::GetHello("HIRO")
Hello HIRO

次にstaticでないメソッドはインスタンスを作成してからでないと使用できません。

インスタンスの作成は New-Object コマンドレットを使用します。

PS> $sample = New-Object SampleClass

インスタンスを作成したら

PS> $sample.GetHello2("HIRO")
Hello Hello HIRO

のようにして、利用することができます。

Add-Typeコマンドレットで使用できる言語はC#だけではないので、次回は別の言語を取り上げたいと思います。

コメント

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