-contains返回false而不是true

时间:2015-09-17 11:35:02

标签: powershell

我试过这个

$arrColors = import-csv -header color colors.txt
$arrColors -contains "blue"

colors.txt包含

blue
red
green

结果是假而不是真为什么?

3 个答案:

答案 0 :(得分:4)

$arrColors.color -contains "blue"

在3.0之前的powershell版本中,这不起作用,但你可以这样做:

($arrColors | select -expand color) -contains "blue"

感谢@Matt指出这一点

答案 1 :(得分:3)

获取CSV对象上的color属性:

$arrColors = (import-csv colors.txt).color
$arrColors -contains "blue"

答案 2 :(得分:1)

如果检查$ arrColors的类型,您会看到它是一个表。 您无法比较表格和字符串。

您可以做的是检查表格中是否有蓝色:

    PS> $arrColors|Where-object{$_.color -eq 'blue}

然后你必须计算输出中的行数,这给出了以下内容:

    PS> $arrColors|Where-object{$_.color -eq 'blue'}| Measure-Object

并检查这是否正面

    PS> $counter=$arrColors|Where-object{$_.color -eq 'blue'}| Measure-Object -property color
    PS> $counter.color -gt 0