RunspaceInvoke#Invokeの戻り値

RunspaceInvokeクラスのInvokeメソッドによるスクリプト式の実行結果の型Collectionだが、戻る値には別に深い意味は無かった。単に式評価の結果が複数あった場合に対応しているだけである。
例えば単純な例として、以下のようにC#からPowerShellスクリプトを実行した場合、

RunspaceInvoke invoker = new RunspaceInvoke();
string script = "get-process";
object result = invoker.Invoke(script);
foreach (PSObject obj in (Collection)result)
{
    Console.WriteLine(obj.BaseObject);
}

コンソールには、現在動いている全てのプロセスを列挙するSystem.Diagnostics.Processクラスのインスタンスの文字列表現が、タスクマネジャの「プロセス」で見るのと同じ数だけ出力されるはずである。ならば、わざわざ戻り値がPSObjectにラップされているのは何故か、というのが今後調べていく所だが、現在のところ恐らくこれはPowerShellのパイプラインに関係しているのではないかと思っている。
逆に言うと、戻り値が複数あった場合にDIコンテナの評価式としてはどう扱うかを考えなくてはならないということになる。