2011-03-03 44 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驅動它,這是不幸的。

相關問題