PowerShell变量包含特定的数字
场景 当我的变量(称为$Numbers)包含0、1和2时,它将在第一个IF语句下运行任何内容。如果我的变量包含0、1、2和3,它将运行另一个If语句 问题PowerShell变量包含特定的数字,powershell,Powershell,场景 当我的变量(称为$Numbers)包含0、1和2时,它将在第一个IF语句下运行任何内容。如果我的变量包含0、1、2和3,它将运行另一个If语句 问题 If ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*") { Write-Host = "Does not contain 3" } Elseif ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*" -and "*3,*") {
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"
}
我似乎无法让它工作,因为它连续运行第一个IF语句(因为仍然包含0、1和2),但如果它不包含数字3,则从不跳过它
简要代码示例
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"
}
欢迎提供任何指导。反转if语句,首先测试0、1、2、3,然后在
Elseif
中测试0、1、2。您应该始终首先测试更具体的情况。反转if语句,首先测试0、1、2、3,然后在Elseif
中测试0、1、2。您应该首先测试更具体的情况。您的测试语法错误
-Contains
将查找精确匹配,而不是通配符匹配,加上每个-和
条件必须是独立测试,例如
If ($Numbers -contains 0 -and $Numbers -contains 1 -and $Numbers -contains 2)
“1”或“2”本身都是非空字符串,在没有对其应用任何类型的比较操作的情况下,它们的计算结果总是$true。您的测试语法是错误的
-Contains
将查找精确匹配,而不是通配符匹配,加上每个-和
条件必须是独立测试,例如
If ($Numbers -contains 0 -and $Numbers -contains 1 -and $Numbers -contains 2)
“1”或“2”本身都是非空字符串,在没有对其应用任何类型的比较操作的情况下,将始终计算为$true。如果
$Numbers
是一个集合,请删除通配符。如果$Numbers
是字符串,请使用match
iocontains
。正如Maarten所说,在这两种情况下,请将语句颠倒过来。我真的希望看到$numbers是如何填充的或其确切内容。如果$numbers
是一个集合,请删除通配符。如果$Numbers
是字符串,请使用match
iocontains
。在这两种情况下,正如马尔滕所说的那样,将声明颠倒过来。我真的很想看看$numbers是如何填充的或其确切内容。