如何从另一个cmdlet正确调用cmdlet?

时间:2013-06-11 13:22:44

标签: c# powershell cmdlet

我写了许多cmdlet。我正在努力的那个我想打电话给我的其他cmdlet。我是这样尝试的:

//Calling cmdlet
protected override void ProcessRecord()
{
    Cmdlet1 _cmdlet1 = new Cmdlet1();
    _cmdlet1.configFilePath = this.configFilePath; //set a few parameters the cmdlet will need
    _cmdlet1.useConfigFile = true; //and one more
    _cmdlet1.Invoke();

    Cmdlet2 _cmdlet2 = new Cmdlet2();
    _cmdlet2.configFilePath = this.configFilePath; //set a few parameters again
    _cmdlet2.useConfigFile = true; //one more
    _cmdlet2.Invoke();
}

但是,当我从powershell运行“调用cmdlet”时,没有任何反应。没有错误,我在其他cmdlet中编写的代码都没有运行。 WriteObjectCmdlet1中有多个Cmdlet2来电,如果cmdlet实际上正在运行,我是不是应该能看到这些?虽然我应该提一下,这显然不是我要检查的唯一一件事,以确认它们是否被成功调用。

1 个答案:

答案 0 :(得分:2)

通过Invoke()方法调用返回使用WriteObject编写的对象。迭代该调用的结果以从cmdlet调用中获取单个对象,例如:

foreach (var result in _cmdlet1.Invoke())
{
    ...
}

有关详细信息,请参阅此MSDN topic