Powershell 即使指定了新值,变量也会保留以前的值

Powershell 即使指定了新值,变量也会保留以前的值,powershell,operator-precedence,Powershell,Operator Precedence,我可能错过了一些简单的东西,但是 我的代码: $BusinessUnits = @() $Animal = 'DOG' if (-not $BusinessUnits -contains $Animal) { $Animal + " NOT FOUND. ADDING" $BusinessUnits += $Animal } else { $Animal + " FOUND" } $Animal = 'Mouse' if (-not $BusinessUnits -C

我可能错过了一些简单的东西,但是

我的代码:

$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
以上代码返回:

DOG NOT FOUND. ADDING Mouse FOUND DOG 第一个如果没有找到狗,那么就添加它;但是,第二个if会找到鼠标,但不会添加鼠标。此时鼠标不在数组中

我做错了什么

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

非运算符的值高于包含运算符的值,因此您可以有效地进行检查

(-not $BusinessUnits) -contains $Animal
而不是你真正想要检查的

-not ($BusinessUnits -contains $Animal)
请使用上面的括号或-notcontains运算符来避免此问题

$BusinessUnits -notcontains $Animal
-not运算符的值高于-contains运算符的值,因此可以有效地进行检查

(-not $BusinessUnits) -contains $Animal
而不是你真正想要检查的

-not ($BusinessUnits -contains $Animal)
请使用上面的括号或-notcontains运算符来避免此问题

$BusinessUnits -notcontains $Animal