C# 试图从C中调用PSCmdlet类#
起初,我试图简单地声明cmdlet的新实例,但出现了一个错误,表明我无法从cmdlet中调用pscmdlet类型的powershell cmdlet 为了做到这一点,我必须实例化Powershell引擎C# 试图从C中调用PSCmdlet类#,c#,powershell,pscmdlet,C#,Powershell,Pscmdlet,起初,我试图简单地声明cmdlet的新实例,但出现了一个错误,表明我无法从cmdlet中调用pscmdlet类型的powershell cmdlet 为了做到这一点,我必须实例化Powershell引擎 PowerShell ps = PowerShell.Create(); ps.AddCommand("Get-Info"); 在我的例子中,如果我使用Get-Process,它可以正常工作,但是Get-Info,这是同一项目中的另一个PSCmdlet,它似乎不起作用 Get Name:术语“
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Info");
在我的例子中,如果我使用Get-Process,它可以正常工作,但是Get-Info,这是同一项目中的另一个PSCmdlet,它似乎不起作用
Get Name:术语“Get Info”未被识别为cmdlet的名称,
函数、脚本文件或可操作程序。检查单词的拼写
名称,或者如果包含路径,请验证该路径是否正确,并且
再试一次
我可以从powershell窗口手动调用get info,但不能从代码中调用
这可能与模块路径有关吗?还是因为我的模块没有加载到这个新实例化的引擎中
如果是,我如何让新引擎也加载模块
下面是如何定义get info的
namespace APICLI
{
[Cmdlet(VerbsCommon.Get, "Info")]
public class GetInfo : PSCmdlet
调用powershell.create()的cmdlet是get name
namespace APICLI
{
[Cmdlet(VerbsCommon.Get, "Name")]
public class GetName : PSCmdlet
其思想是get info获取与特定对象相关的所有信息,但您可以使用get name获取特定信息
我希望使用它来创建更小、更受约束的cmdlet,它只需调用get info
但我认为这与路径有关,因为我的项目没有导入到get name中实例化的新创建的powershell引擎中
谢谢 我相信我已经找到了答案 您可以在Powershell.Create()之后添加以下内容:;以包含当前程序集
PowerShell ps = PowerShell.Create();
ps.AddCommand("Import-Module").AddParameter("Assembly", System.Reflection.Assembly.GetExecutingAssembly());
ps.Invoke();
ps.Commands.Clear();
再次感谢您的帮助。获取信息的定义在哪里?你能展示它吗?你正在cmdlet中创建新的powershell实例吗?@mikez是的,它在cmdlet中。但我得到的错误消息似乎是围绕一个模块路径。我想知道我是否调整了PSModulePath,这将修复它。@davidG,确定它是在同一个项目的名称空间中定义的。编辑此帖子以显示其位置。抱歉,各位。我想我找到了答案