2014-02-27 82 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時增加它。 –