2016-09-27 116 views
1

我正嘗試讀取文件夾中的文本文件並通過兩個工作流程讀取內容。是否可以在另一個工作流程中調用工作流程?在工作流程中調用工作流程

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並行接受工作流程。

回答

2

您必須明確指定參數,其名稱。它也像你不能Foreach-Object命令內調用工作流 - 然而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 
    } 
} 
+0

它拋出錯誤ReadTextFile不被識別爲cmdlet。 – Kurkula

+1

你說得對。看起來你不能在'Foreac-Object' cmdlet中調用它。然而它在foreach循環中起作用。我會編輯我的答案。 –

+0

我猜想有一些問題。 Get-Item:找不到接受參數 'System.Management.Automation.PSDataCollection'1 [System.Management.Automation.PSObject]'的位置參數。 在PurgeStreamsFromFolder:3字符:3 + + CategoryInfo:InvalidArgument:(:) [獲取-項目],ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand + PSComputerName:[本地主機] – Kurkula