我必须导入一个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,哪个更好......
答案 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
$_
}
}