前回は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()
として使用します。