Сначала я попытался просто объявить новый экземпляр командлета, но получил сообщение об ошибке, которое указывало, что я не мог вызывать командлеты powershell типа pscmdlet из командлета.Пытается вызвать класс PSCmdlet из C#
Для этого мне нужно создать экземпляр двигателя Powershell.
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Info");
В моем случае, если я использую Get-Process, который работает просто отлично, но Get-Info, который является еще PSCmdlet в том же проекте, кажется, не работает.
Get-Name: Термин 'Get-Info' не распознается как имя командлета, функции, файла сценария или исполняемой программой. Проверьте правильность написания имени или если был указан путь, убедитесь, что путь правильный, а попробуйте снова.
Я могу вызвать get-info вручную из окна powershell, но не из моего кода.
Возможно, это связано с модулем? или потому что мой модуль не загружен в этот новый экземпляр двигателя?
если да, то как мне получить новый двигатель для загрузки модуля?
Вот как получить-инфо определяется
namespace APICLI
{
[Cmdlet(VerbsCommon.Get, "Info")]
public class GetInfo : PSCmdlet
командлета, звонит powershell.create(), это получить имя
namespace APICLI
{
[Cmdlet(VerbsCommon.Get, "Name")]
public class GetName : PSCmdlet
Идея заключается в том, что получить-инфо получает все, что относится к определенному объекту, но вы можете использовать get-name для получения конкретной информации.
Я надеялся использовать это, чтобы создать более мелкие более ограниченные командлеты, которые просто вызывают get-info.
но я думаю, что это связано с путём, так как мой проект не импортируется во вновь созданный движок powershell, созданный в get-name.
спасибо!
Где определяется информация для получения информации? вы можете это показать? – DavidG
Создаете ли вы новый экземпляр powershell в командлете? –
@mikez Да, это в командлете. Но сообщение об ошибке, которое я получаю, похоже, находится вокруг пути к модулю. Интересно, настраиваю ли я свой PSModulePath, который исправит его. – anoopb