PowerShellのホスティングを理解します
-
19-09-2019 - |
質問
私はPowerShellをホストしているいくつかの作業を行ってきたし、読書の多くを行っているが、私は奇妙な行動を見ていますし、それは私がやったと思ったように私がホストを理解していないなら、私は思ってしまいます。
私はRunspaceFactoryと実行空間を作成しています:
var runSpace = RunspaceFactory.CreateRunspace()
私は自分のホストの実行全体で同じ実行空間を利用しています。私が最初にホストを起動したとき、私はインポートモジュールのコマンドを起動します:
var pipeline = runSpace.CreatePipeline();
var psCommand = new Command("Import-Module");
psCommand.Parameters.Add("Name", directory + "MyModule");
pipeline.Commands.Add(psCommand);
pipeline.Invoke();
「ディレクトリ」のデフォルトのモジュールディレクトリではありませんディレクトリです。私は、PowerShellコマンドウィンドウにまったく同じ構文で同じ輸入-moduleコマンドを使用することができますし、それが正常に動作します。コマンドは、私のカスタムホスト内正常に完了するように見えます。その後、実行中の私は、モジュール内のコマンドレットを呼び出そうとます:
var pipeline = runSpace.CreatePipeline();
var psCommand = new Command("Get-Stuff");
pipeline.Commands.Add(psCommand);
var stuff = pipeline.Invoke();
しかし、呼び出しに、私は「ゲット・スタッフが」cmdlet..etcではないことを例外を取得ます。
私の理解では、実行空間は、状態のこのタイプを維持するであろうでした。これはそうではありませんか?私は別のプロジェクト内で成功したホストを作成しました。二つの主な違いは、そのホストは、デフォルトのモジュールディレクトリ(ドキュメント\モジュール\)を利用されていることを、私はこのようなCreateRunspace()メソッドを呼び出します:
をVAR実行空間= Runspace.CreateRunspace(のCustomHost);
私は状態を維持することができるようにPSHostを定義する必要がありますか?
解決
これは実際には末尾の「\」を有するモジュールのディレクトリの問題でした。
インポートモジュール-Name "D:\ AAA \モジュール\ XYD \" は無効です。
。