アセンブリの読み込み
VB.NETユーザーやC#ユーザーであれば自分が使用したいアセンブリを知っているかと思います。先ほど確認した一覧に目的とするアセンブリがない場合には、手動で読み込む必要があります。
アセンブリを読み込むにはAssemblyクラス(System.Reflection.Assembly)を使用します。
アセンブリのロードに使用できるメソッドについて例を交えながら紹介します。
LoadWithPartialNameメソッド
LoadWithPartialNameメソッドは指定したアセンブリ名を読み込みます。基本構文は下記の通りです。
[System.Reflection.Assembly]::LoadWithPartialName(アセンブリ名)
このメソッドはアセンブリ名を指定するだけでをロードすることができます。例えばSystem.Drawing.Bitmapを使用したい場合は、System.Drawingアセンブリが必要なので、下記のようにして読み込みを行います。
PS> [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

コマンドを実行すると、上図のようにアセンブリ情報が表示されます。
このメソッドでは常に最新のバージョンがロードされ、「Version」列に読み込まれたアセンブリのバージョンが、「Location」列にそのアセンブリのフルパスが表示されます。
アセンブリ情報を表示させたくない場合は先頭に[void]を付け、表示を抑制します。
PS> [void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

Loadメソッド
先ほどのLoadWithPartialNameメソッドを使用すると常に最新のバージョンのアセンブリが読み込まれてしまうため、開発で使用してきたバージョンと異なる場合があります。
このような場合には、Loadメソッドを使用して読み込むアセンブリのバージョンを指定します。
Loadメソッドの構文は下記の通りです。
[System.Reflection.Assembly]::Load(アセンブリの完全名)
アセンブリの完全名を調べるには、一度LoadWithPartialNameメソッドを使用してアセンブリをロードしたものを変数にセットします。
次にFullNameプロパティを表示させることで、対象アセンブリの完全名を取得することができます。
PS > $a = [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
PS > $a.FullName

このようにして求めた完全名を控えておき、Loadパラメータの引数に渡すことで特定のバージョンのアセンブリを読み込むことが可能となります。
PS > [System.Reflection.Assembly]::Load("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

LoadFromメソッド
PowerShellでは自作したライブラリ(dll)を使用することも可能です。この場合はLoadFromメソッドを使用します。基本構文は下記の通りです。
[System.Reflection.Assembly]::LoadFrom(dllファイルのパス)
例としてC#で簡単なライブラリを作り読み込む例を紹介します。
// Hello.dll
namespace MyLib
{
public class Hello
{
public Hello()
{
}
public static string SayHello()
{
return "Hello PowerShell!!";
}
}
}
上記をコンパイルしてHello.dllというライブラリを作成します。
このライブラリを読み込むには下記のようにLoadFromメソッドを使用し、ライブラリのパスを指定します。
PS> [System.Reflection.Assembly]::LoadFrom("C:\Work\Test.dll")

