2017-08-10 79 views
1

作为用于修改CSV一个脚本的一部分,我检查针对一列subCatDesc以确定基于存储在一个预定值的阵列。如何在的powershell使用数组变量作为自变量,如果语句

$grocerySubTeams = "Grocery","Frozen","Bulk","Dairy" 

function identifyTeam() { 
foreach ($row in $csv) { 
    if ($row.subCatDesc -contains $grocerySubTeams) { 
     $row.team = "Grocery" 
    } 
    } 
} 

当运行此脚本的栏保持空白。但是,如果我在下面明确说明了我想要的内容,它就可以工作。

function identifyTeam() { 
foreach ($row in $csv) { 
    if (($row.subCatDesc -like "Grocery") -or ($row.subCatDesc -like "Frozen") -or ($row.subCatDesc -like "Bulk") -or ($row.subCatDesc -like "Dairy")) { 
     $row.team = "Grocery" 
    } 
    } 
} 

我试过对阵列而不是-contains的不同比较运算符,但都没有工作。

+0

您是否试图将一个项目与多个项目进行比较,或多个比较? – TheIncorrigible1

+1

试用,代替-contains –

+0

因此,列** subCatDesc **可以是*杂货*,*散装*,*冷冻*或*乳制品*。如果它匹配这4个项目中的任何一个,则列** Team **应设置为* Grocery *。这是否为你澄清? – BryceJenkins

回答

1

它是周围的其他方法:

$grocerySubTeams -contains $row.subCatDesc 
+0

其实只是把比较运算符从**切换到**包含**到** - 像Mark Wragg那样建议解决它,因为I我将$ row.subCatDesc的值与预先定义的$ grocerySubTeams数组进行比较。 – BryceJenkins

0

在切换过程比较操作的初步意见马克Wragg给出的答案-in解决了我所看到的行为。

if ($row.subCatDesc -in $grocerySubTeams) { 

是比较单元格的单个值与数组的多个项目的正确语法。