调用工作流程内的工作流程

时间:2016-09-27 08:12:28

标签: powershell foreach

我正在尝试读取文件夹中的文本文件,并通过两个工作流程阅读内容。是否可以在另一个工作流程内调用工作流程?

workflow ReadFilesFromFolder
{
     $folderPath = 'C:\Users\MyName\MyFolder'

     Get-ChildItem $folderPath -Filter *.txt | 
        Foreach-Object {
            ReadTextFile $_.FullName   
        }
}

workflow ReadTextFile
{
    param($path)

    $lines = Get-Content $path  
    ForEach -Parallel ($line in $lines)
    {        
            $line  
    }
}

PS:Foreach parallel只接受工作流程。

1 个答案:

答案 0 :(得分:3)

您必须明确使用名称指定参数。看起来您无法调用Foreach-Object cmdlet中的工作流 - 但foreach似乎有效:

workflow ReadFilesFromFolder
{
     $folderPath = 'C:\Users\MyName\MyFolder'

     $items = Get-ChildItem $folderPath -Filter *.txt
     foreach($item in $items)
     {
         ReadTextFile -path $item.FullName   
     }
}

workflow ReadTextFile
{
    param($path)

    $lines = Get-Content $path  
    ForEach -Parallel ($line in $lines)
    {        
        $line  
    }
}