【问题标题】:How to correctly invoke cmdlet from another cmdlet?如何从另一个 cmdlet 正确调用 cmdlet?
【发布时间】:2013-06-07 08:49:08
【问题描述】:

我编写了许多 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 中编写的代码都没有运行。 Cmdlet1Cmdlet2 中有许多 WriteObject 调用,如果 cmdlet 实际正在运行,我是否应该能够看到这些调用?虽然我应该提到,这显然不是我要检查以验证它们是否被成功调用的唯一事情。

【问题讨论】:

    标签: c# powershell cmdlet


    【解决方案1】:

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

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

    查看MSDN topic了解更多详情。

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 2010-09-26
      • 2012-07-31
      • 2015-06-21
      相关资源
      最近更新 更多