今回は.NETアセンブリのロードについて説明したいと思います。
PowerShellは.NET Frameworkを基盤としており、あらかじめロードされているアセンブリがいくつかあります。
しかし、実際にやりたいことを実現するためには、ロード済みのアセンブリだけでは足りない場合があり、こういった場合は目的とするアセンブリをロードして、PowerShell上から使用できる様にする必要があります。
ロード方法ですが
[reflection.assembly]::LoadWithPartialName
を使用します。
たとえば Microsoft.VisualBasic 名前空間を使用できるようにするには
[reflection.assembly]::LoadWithPartialName("Microsoft.VisualBasic")
のようにしますが、このまま実行した場合は結果がAssemblyオブジェクトとして返されコンソールに表示されていまいます。
スクリプトの中からロードする場合には、出力されると邪魔な場合もありますので先頭に[void]を付加して
[void][reflection.assembly]::LoadWithPartialName("Microsoft.VisualBasic")
とすることをおすすめします。メッセージが必要な方は[void]は付加しないでください。
dllファイルのアセンブリのロードについても紹介しておきましょう。
この場合は
[reflection.assembly]::LoadFrom(dllファイル名)
を使用します。
こちらも同様にロード時にメッセージが出力されるので、回避したい方は先頭に[void]を付加してください。
せっかくなので1つサンプルを紹介します。
下記は Microsoft.VisualBasic
をロードしてStrConvメソッドを使用できるようにして、ひらがなとカタカナを相互変換できるようにするものです。
PS C:\Work> [void][reflection.assembly]::LoadWithPartialName("Microsoft.VisualBasic") PS C:\Work> PS C:\Work> $vbHiragana = [Microsoft.VisualBasic.VbStrConv]::Hiragana PS C:\Work> $vbKatakana = [Microsoft.VisualBasic.VbStrConv]::Katakana
上記を入力し終えたら、「ひらがな」から「カタカナ」へ変換してみましょう。
PS C:\Work> [Microsoft.VisualBasic.Strings]::StrConv("あいうえお", $vbKatakana) アイウエオ
ついでに「カタカナ」から「ひらがな」へも変換してみましょう。
PS C:\Work> [Microsoft.VisualBasic.Strings]::StrConv("アイウエオ", $vbHiragana) あいうえお
このようにアセンブリをロードし、ぜひPowerShellで.NET Frameworkを有効活用してみてください。
コメント
[…] [System.Reflection.Assembly]::LoadFromメソッドについては、過去記事「.NETアセンブリをロードするには(PowerShell 入門)」を参照ください。 […]