起初,我试图简单地声明一个新的 cmdlet 实例,但出现错误,表明我无法从 cmdlet 中调用 pscmdlet 类型的 powershell cmdlet。
为了做到这一点,我必须实例化 Powershell 引擎。
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,这些 cmdlet 只需调用 get-info。
但我认为它与路径有关,因为我的项目没有导入到在 get-name 中实例化的新创建的 powershell 引擎中。
谢谢!