Используйте пользовательский модуль 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.