2014-04-28 135 views
1

我有以下PowerShell腳本:工作流程與管道

function Testing 
{ 
    [CmdLetBinding()] 
    Param (    
     [int]$MaxRetrycount = 3, 
     [Parameter(ValueFromPipeline=$True)] [String]$Definition 
    ) 
    return $MaxRetrycount 
} 

workflow Test-Workflow 
{ 
    $PSComputerName 

    $data = 'abc','xyz' 
    $data | Testing -MaxRetrycount 2 -Definition 
    $JobName 
} 

Test-Workflow 

但是執行這個腳本給我的錯誤一樣

「測試」活動是不是在工作流的管道的支持。

我從調用工作流的命令管道調用函數時出錯了嗎?

在此先感謝。

+0

我不認爲這個問題有與工作流程無關。你只是調用了錯誤的測試功能。嘗試在工作流程之外測試您的功能。 –

+0

@Dangph謝謝你的建議,我試過它在外面工作,但沒有在工作流程功能裏工作。 – PratikP24

回答

0

嗯,使用管道輸入不工作,但如果你調用該函數不使用管道輸入它的工作:

function Test-Function 
{ 
    [CmdLetBinding()] 
    Param (    
     [int]$MaxRetrycount = 3, 
     [Parameter(ValueFromPipeline=$True)] [String]$Definition 
    ) 
    return $MaxRetrycount 
} 

workflow Test-Workflow 
{ 
     $PSComputerName 

     $data = 'abc','xyz' 
     foreach ($d in $data) { 
      Test-Function -MaxRetrycount 2 -Definition $d 
     } 
     $JobName 
} 

Test-Workflow 

輸出:

Test-Workflow 
2 
Job37 
+0

感謝@KeithHill的幫助,但是我想通過命令管道一個接一個地傳遞「數據」數組元素,例如使用-Defination'abc'調用「Test-Function」函數,第二次使用'xyz'。你知道我如何在工作流程功能中做到這一點? – PratikP24

+1

您可以使用foreach構造來迭代。查看更新後的答案。 –

+0

謝謝@KeithHill您的回答很有用,但是我在這種方法中的問題是在PowerShell遠程處理中從遠程會話中檢索數據。 – PratikP24