-1

関数 PowerShell モジュールを次のように記述しました。

    Function docConvert2{
         param ([string]$sourceFile, [string]$sourceFilePath)
         ....
         ....
    }

モジュールを正常にインポートしました

ここに画像の説明を入力

そして、powershellコマンドレットでモジュールを使用できます

ここに画像の説明を入力

C#で関数を呼び出そうとすると、そのような例外が発生しました

「docConvert2」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから再試行してください。

C# コード

        PowerShell pShell = PowerShell.Create();
        pShell.Commands.AddCommand("import-module").AddParameter("Name", "DocConverter2");
        pShell.Invoke();//works correctly
        pShell.AddCommand("docConvert2");
        pShell.AddParameter("sourceFile", "'addendum no-3_PREP.doc'");
        pShell.AddParameter("sourceFilePath", @"'D:\New\wordler'");
        pShell.Invoke();//throw exception

私の間違いは何ですか?

4

2 に答える 2

1

try:

PowerShell pShell = PowerShell.Create();
pShell.Commands.AddCommand("import-module").AddParameter("Name","DocConverter2");
pShell.Invoke();
...
rest of you code here
...

You can also use InitialSessionState to preload module: read here

于 2013-09-18T10:41:02.547 に答える
0

オブジェクトをインスタンス化したらpShell、コマンド ラインから行ったのと同じように、モジュールをインポートする必要があります。

1行目と2行目の間で以下を実行してみてください。

        ps.AddScript(@"import-module DocConverter2");
        ps.Invoke();

また、C# アプリケーションが PSM のあるパスにアクセスできることを確認してください。

于 2013-09-18T10:39:21.353 に答える