2014-02-27 48 views
2

我在C#中通过扩展PSCmdlet类来创建PowerShell cmdlet。 我需要获取整个Pipelined输入以在C#代码中使用。我试着具有设置为性能参数:

[Parameter(Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true)] 
public Object Connection; 

当我试图通过管道中的项目清单执行cmdlet时,我同时在C#代码来处理得到一个项目。

[email protected]("value1","value2") 
$a | cmdlet-name 

我需要获取整个管道输入来处理我的C#代码。我发现这可以在PowerShell中使用$ input变量获得。有没有这个$输入PowerShell变量的C#等价物?

回答

1

不是我所知道的。但是,可以使用ProcessRecord方法将管道对象(从绑定到管道输入的属性)累加到集合中,然后在EndProcessing方法中处理累积的对象。

+0

我不确定,但是对于每个流水线项目,ProcessRecord方法会执行一次吗?如果是的话,有没有办法找出ProcessRecord方法的当前传递号? – Vijay

+0

是为每个管道对象执行ProcessRecord。请记住,单个管道对象可能是一个数组,取决于您如何定义管道绑定的属性。我没有意识到确定传递数的内置方式,但您可以随时向您的cmdlet添加一个int字段,并在每次调用ProcessRecord时增加它。 –