Используйте пользовательский модуль powershell в C#

Я написал функцию модуля 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

В чем моя ошибка?

2 ответа

Решение

Пытаться:

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

Вы также можете использовать InitialSessionState для предварительной загрузки модуля: читайте здесь

После создания вашего экземпляра pShell объект, вам нужно импортировать ваш модуль, так же, как вы это делали из командной строки.

Попробуйте выполнить следующее между строками 1 и 2.

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

И убедитесь, что ваше приложение C# имеет доступ к пути, по которому расположен ваш PSM.

Другие вопросы по тегам