PowerShell变量包含特定数字

时间:2015-09-15 12:18:43

标签: powershell

方案

当我的变量(称为$ 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"

}

感谢任何指导。

2 个答案:

答案 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,缺少应用于任何类型的比较操作它们。