方案
当我的变量(称为$ Numbers)包含0,1 和 2时,它将在第一个IF语句下运行任何内容。如果我的变量包含0,1,2 和 3,它将运行另一个IF语句。
问题
我似乎不能正常工作,因为它连续运行第一个IF语句(由于仍然包含0,1和2)但如果它不包含数字3,则永远不会跳过它。 / p>
简要代码示例
If ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*") {
Write-Host = "Does not contain 3"
}
Elseif ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*" -and "*3,*") {
Write-Host "Contains 3"
}
感谢任何指导。
答案 0 :(得分:3)
反转if语句,首先测试0,1,2,3,在Elseif
中测试0,1,2。您应该首先测试更具体的情况。
答案 1 :(得分:3)
您的测试语法错误。
-Contains
将查找完全匹配,而不是通配符匹配,而且每个-and
条件必须是独立测试,例如
If ($Numbers -contains 0 -and $Numbers -contains 1 -and $Numbers -contains 2)
“ 1,”或“ 2,”本身是非空字符串,并且总是会计算为$ true,缺少应用于任何类型的比较操作它们。