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

问题描述 投票:1回答:1

我可能遗漏了一些简单但......

我的代码:

$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所以添加它;但是,第二个如果找到鼠标并且不添加它。此时鼠标不在数组中。

我做错了什么?

我正在编写代码来创建CSV文件,作为某些处理的一部分。业务单位的值不会保持不变,在处理过程中可能会有所不同。而且我只想在添加第一个细节行时写入标题行。

powershell operator-precedence
1个回答
4
投票

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

(-not $BusinessUnits) -contains $Animal

而不是你真正想要检查的

-not ($BusinessUnits -contains $Animal)

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

$BusinessUnits -notcontains $Animal
© www.soinside.com 2019 - 2024. All rights reserved.