即使分配了新值,变量也会保留先前的值

时间:2019-02-19 20:40:22

标签: 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 -Contains $Animal) {
    $Animal + " NOT FOUND. ADDING"
    $BusinessUnits += $Animal
} else {
    $Animal + " FOUND"
}
$BusinessUnits

以上代码返回:

DOG NOT FOUND. ADDING
Mouse FOUND
DOG

第一个if找不到DOG,所以添加了它;但是,第二个if查找并没有添加鼠标。此时鼠标不在阵列中。

我做错了什么?

作为一些处理的一部分,我正在编写代码来创建CSV文件。业务单位的值将不是恒定的,并且在处理期间可能会有所不同。而且我只想在添加第一个详细信息行时写标题行。

1 个答案:

答案 0 :(得分:4)

-not运算符比-contains运算符具有更高的precedence,因此您可以有效地进行检查

(-not $BusinessUnits) -contains $Animal

而不是您实际要检查的内容

-not ($BusinessUnits -contains $Animal)

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

$BusinessUnits -notcontains $Animal