如何在powershell if语句中使用数组变量作为参数

时间:2017-08-10 17:41:02

标签: arrays powershell csv data-manipulation

作为修改CSV的脚本的一部分,我正在检查列 subCatDesc ,以根据存储在数组中的预定值确定团队

$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,但都没有效果。

2 个答案:

答案 0 :(得分:1)

反过来说:

  $grocerySubTeams -contains $row.subCatDesc

答案 1 :(得分:0)

Mark Wragg在将比较运算符切换为 -in 的初步评论中给出的答案解决了我所看到的行为。

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

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