即使分配了新值,变量仍保留以前的值

Variable holds previous value even when new value assigned

我可能遗漏了一些简单的东西但是...

我的代码:

$BusinessUnits = @()
$Animal = 'DOG'

if (-not $BusinessUnits -contains $Animal) {
    $Animal + " NOT FOUND. ADDING"
    $BusinessUnits += $Animal
} else {
    $Animal + " FOUND"
}

$Animal = 'Mouse'
if (-not $BusinessUnits -Contains $Animal) {
    $Animal + " NOT FOUND. ADDING"
    $BusinessUnits += $Animal
} else {
    $Animal + " FOUND"
}
$BusinessUnits

以上代码returns:

DOG NOT FOUND. ADDING
Mouse FOUND
DOG

第一个如果没有找到DOG所以添加它;但是,第二个 if 找到了 Mouse 并且没有添加它。此时鼠标不在数组中。

我做错了什么?

我正在编写代码来创建 CSV 文件,作为某些处理的一部分。业务单位的值不会是恒定的,并且在处理过程中可能会发生变化。我只想在添加第一个详细信息行时写入 header 行。

-not 运算符的 precedence 高于 -contains 运算符,因此您实际上是在检查

(-not $BusinessUnits) -contains $Animal

而不是你真正想要检查的内容

-not ($BusinessUnits -contains $Animal)

使用括号(见上文)或 -notcontains 运算符来避免这个问题。

$BusinessUnits -notcontains $Animal