PowerShell - Csv:有条件的foreach?

时间:2013-06-28 07:37:27

标签: loops powershell foreach conditional-statements

我必须导入一个csv文件,我想直接在foreach中添加一个条件。 我的意思是:

要阅读csv,我这样做(是的,我的分隔符是\):

$csv = Import-Csv -Delimiter \ -Path $mypath -Header 'column1', 'column2', 'column3'

然后我做:

foreach($line in $csv)
{
#Actions
}

我想做什么,但我不知道是否可能:

for($i =1; $i -lt $myarray.Length; $i++)
{
   foreach($line in $csv) | Where $line.column2 -eq $myarray[$i]
   {
      #Actions only if $line.column2 is equal to $myarray[$i]
   }
}

所以我有一个数组,里面有名字。我想做#Actions,只有当csv中的一列与我的数组中的信息匹配时才会这样做。如果没有,我想在$ csv中更改$ line。

我写的这个想法看起来很沉重,我认为有一种更好更快(更难和更强的#DaftPunk)方法。

如果有人之前已经使用过这个,请告诉我们:)

提前致谢,

尼科。

P.S:我为我的英语道歉;)

编辑:我刚刚意识到我可以做一个if条件:

for($i =1; $i -lt $myarray.Length; $i++)
{
   foreach($line in $csv)
   {
      if($line.column2 -eq $myarray[$i]
      {
         #Actions
      }
   }
}

但我仍然认为:| #Conditions,哪个更好......

1 个答案:

答案 0 :(得分:1)

你可以在循环中使用IF,这是一般方法

Import-Csv ... | Foreach-Object{

   if(something)
   {
      #do something with the current object and write it back to the pipeline
      $_ = ...
      $_
   }
   else
   {
      # write the object back to the pipeline
      $_
   }
}