2011-03-03 43 views
1

我想以编程方式组装并运行一个包含我自己的PSCmdlet的管道。 但是,Pipeline类只允许添加字符串和命令(由字符串依次构造)。如何以编程方式将PSCmdlet添加到Powershell管道中?

var runspace = ...; 
var pipeline = runspace.CreatePipeline(); 
pipeline.AddCommand("Get-Date"); // ok 
var myCmdlet = new MyCmdlet(); 
pipeline.AddCommand(myCmdlet); // Doesn't compile - am I fundamentally 
     // misunderstanding some difference between commands and commandlets? 
foreach(var res in pipeline.Invoke()) {...} 

我相信我在做的事情应该基本上有意义......或者有没有不同的方式来做到这一点?

回答

1

根据您放入Cmdlet属性的内容,您的cmdlet应该有一个定义良好的语法。

举例来说,这里是哪里创建我自己的明确的主机小命令开始更换内置明确的主机功能:

<Cmdlet("clear", "host")> _ 
Public Class Clearhost 
    Inherits Cmdlet 

从Cmdlet的属性,我的小命令语法“明确 - 主机”。你应该可以使用它(因为它是一个字符串)并将其添加到管道中。

0

通过在ILSpy中搜索其他答案并拨打​​后,我确信不可能直接添加Cmdlet实例。 PowerShell要求你使用字符串,如果你只是想用适当的类型从.NET驱动它,这是不幸的。

相关问题