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

本文关键字:cmdlet 调用 另一个 正确地 | 更新日期: 2023-09-27 18:18:04

我写了一些cmdlet。我现在正在做的这个,我想调用我的其他cmlet。我正在尝试这样做:

//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中运行"Calling cmdlet"时,什么也没有发生。没有错误,我在其他cmdlet中编写的代码都没有运行。在Cmdlet1Cmdlet2中有许多WriteObject调用,如果cmdlet实际上正在运行,我不应该看到这些调用吗?尽管我应该提到,这显然不是我要检查的唯一事情,以验证它们是否被成功调用。

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

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

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

有关详细信息,请参阅此MSDN主题。