[PowerShell V2 CTP3]PowerShellでVB.NET

前回はPowerShellでC#を使用したので、今回はVB.NETを使用する方法について説明します。

PowerShellでVB.NETのソースコードを展開する場合もAdd-Typeコマンドレットを使用します。

Add-Type コマンドレットには -Languageパラメータという言語を指定するパラメータがあるのですが、"VisualBasic"と指定するとVB.NETを使用できるようになります。

既定値はC#となっているので、前回は指定しなかったというわけです。

使用可能な言語とパラメータに指定する値は下記の通りです(*)。

言語 パラメータ値
C# CSharp
CSharpVersion3
VB.NET VisualBasic
JScript JScript

* C#がなぜ2通りあるのかわかりません。どのように差が出るのか… わかる方いましたら情報いただけると助かります。

Add-Typeコマンドレットの書式は下記の通りとなります。

Add-Type -Language 使用する言語 展開するソースコード

 

以下は、乱数を作成するメソッドをVB.NETで作成し、PowerShellで使用できるようにします。

$source = @"
Public Class MyFunction

    Public Shared Function GetRandom( _
        ByVal MinValue As Integer, _
        ByVal MaxValue As Integer) As Integer
        Dim r As New System.Random()
        Return r.Next(MinValue, MaxValue)
    End Function


    Public Function GetRandom2() As Integer
        Dim r As New System.Random()
        Return r.Next(0, 10)
    End Function
End Class
"@


Add-Type -Language VisualBasic $source

C#のときと同様に Sharedなメソッドは

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

で使用できます。

今回作成したクラスMyFunctionにあるメソッド GetRandomは

PS> [MyFunction]::GetRandom(-5, 5)

のようにして使用します。この場合は-5~5までの間の乱数を返します。

インスタンスを作成する場合も前回と同様で

変数 = New-Object クラス名

とします。

今回のクラスの場合は

PS> $MyFunc = New-Object MyFunction

としてインスタンスを作成し

PS> $MyFunc.GetRandom2()

として使用します。

コメント

  1. mutaguchi より:

    おそらく、.NET Framework 3.5.1(C#3.0)がインストールされている環境と、.NET Framework 2.0しかインストールされていない環境の二通りを想定しているのだと思います。
    Windows Server 2008 R2では.NET 3.5.1がデフォルトでオフにされているのでそれの関係もあるかと。

  2. HIRO より:

    むたぐちさん
    コメントありがとうございます。

    >おそらく、.NET Framework 3.5.1(C#3.0)がインストールされている環境と、.NET Framework 2.0しかインストールされていない環境の二通りを想定しているのだと思います。
    なるほどですね。

    しかし、なぜC#だけなんでしょうね?
    VBは.NET Frameworkのバージョンは気にしなくて良いと言うことなんでしょうかね…

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