2016-09-27 77 views
0

我正在使用powershell读取具有文本行和显示项目的文本文件。我如何使用并行foreach而不是foreach。我试过foreach和它的工作,但foreach并行语法没有工作。Powershell foreach语法错误

$lines = Get-Content myFile.txt | Where {$_ -notmatch '^\s+$'} 
Foreach ($Item in $lines) 
{ 
$Item 
} 

MyFile.Txt 

newyork is great 
seattle is cold 
florida is hot 

这是我试过

$lines = Get-Content myFile.txt | Where {$_ -notmatch '^\s+$'} 
     ForEach -Parallel ($Item in $lines) 
      { 
      $Item 
      } 

错误:-parallel一个只用于工作流程

回答

1

要使用ForEach -parallel,用你的代码是这样的:

workflow myworkflow{ 
    $lines = Get-Content myFile.txt | Where {$_ -notmatch '^\s+$'} 
    ForEach -Parallel ($Item in $lines){ 
     sequence{ 
      $Item 
     } 
    } 
} 

然后,请致电您的工作流程:myworkflow

工作流程是非常有用的,在这里你可以找到更多的信息:

希望这是有用的

+0

真的很有帮助。在这种情况下序列的用途是什么?即使平行,我也看到每个记录一次显示一个记录。 – Kurkula

+0

太棒了!这是'sequence'关键字的定义:_Sequence关键字在并行脚本块中按顺序运行命令。序列脚本块与其他命令并行运行,但序列脚本块中的命令按指定的顺序依次运行。_查看[this](https://technet.microsoft.com/en-us/) library/jj574157(v = ws.11).aspx)举例:) –