2014-02-25 25 views
0

我想創建一個嵌套的管道。現在我在這個嵌套管道中運行的cmdlet需要檢查它是否從嵌套管道運行。從嵌套管道運行時,它需要表現得有點不同。從cmdlet的內部管道獲取信息

任何人都可以幫助如何確定該cmdlet是否從嵌套管道運行?

我用下面的代碼來創建嵌套的管道:

Pipeline pipeline = Runspace.DefaultRunspace.CreateNestedPipeline("cmdletName","true") 
+0

我感覺有缺陷的設計。 –

回答

0

我傾向於@Ansgar Wiechers同意,我認爲你不一定接近管道的「正確」的方式。

PowerShell旨在使用與流水線操作員|連接在一起的獨立小命令將數據從一個cmdlet傳遞到另一個cmdlet。物理創建一個嵌套管道會破壞這個約定,並且會使事情過於複雜。

PowerShell確實有幾種方法來處理管道以及數據如何通過它們(例如,使用Begin,Process,End塊)。以下是使用以下參考文章的鏈接:Grown-Up PowerShell Functions。它解釋了PowerShell的流水線如何工作,以及如何使用Begin,Process,End塊以及如何創建cmdlet,並且非常值得您閱讀。

- 編輯 -

我想我更好地理解你的意思。你正在C#程序中運行PowerShell(因此需要創建一個嵌套管道)。

要查看管道是否嵌套,可以使用Pipeline.IsNested屬性。

+0

我正在創建一個嵌套管道,因爲我想從已經運行的cmdlet中調用一個cmdlet。所以我在同一個運行空間中創建了一個嵌套管道,並且在這個管道中是第二個cmdlet。從另一個cmdlet調用此cmdlet時需要採取不同的行爲。 – user3351603

+0

請參閱上述編輯。 – HAL9256

+0

不,我不能使用pipeline.isNested屬性,因爲我沒有管道的名稱來使用這個屬性。我需要在這個嵌套管道中運行的cmdlet中檢查它。現在,此cmdlet的函數將不具有用於創建嵌套管道的Pipeline變量。 – user3351603