我可能缺少一些简单的东西,但是...
我的代码:
$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文件。业务单位的值将不是恒定的,并且在处理期间可能会有所不同。而且我只想在添加第一个详细信息行时写标题行。
答案 0 :(得分:4)
-not
运算符比-contains
运算符具有更高的precedence,因此您可以有效地进行检查
(-not $BusinessUnits) -contains $Animal
而不是您实际要检查的内容
-not ($BusinessUnits -contains $Animal)
使用括号(请参见上文)或-notcontains
运算符来避免此问题。
$BusinessUnits -notcontains $Animal