PowerShell 变量包含特定数字
Posted
技术标签:
【中文标题】PowerShell 变量包含特定数字【英文标题】:PowerShell Variable Contains Specific Numbers 【发布时间】:2015-12-11 16:49:14 【问题描述】:场景
当我的变量(称为 $Numbers)包含 0、1 和 2 时,它将运行第一个 IF 语句下的任何内容。如果我的变量包含 0、1、2 和 3,它将运行另一个 IF 语句。
问题
我似乎无法让它工作,因为它连续运行第一个 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"
感谢任何指导。
【问题讨论】:
如果$Numbers
是一个集合,则删除通配符。如果$Numbers
是字符串,请使用match
io contains
。在这两种情况下,正如 Maarten 所说,颠倒声明。
我真的很想看看 $numbers 是如何填充的或确切的内容。
***.com/questions/18877580/…
【参考方案1】:
您的测试语法错误。
-Contains
将寻找完全匹配,而不是通配符匹配,而且每个 -and
条件必须是独立测试,例如
If ($Numbers -contains 0 -and $Numbers -contains 1 -and $Numbers -contains 2)
"1," 或 "2," 本身是非空字符串,并且将始终评估为 $true,没有应用任何类型的比较操作他们。
【讨论】:
【参考方案2】:反转if语句,先测试0、1、2、3,在Elseif
中测试0、1、2。您应该始终先测试更具体的情况。
【讨论】:
以上是关于PowerShell 变量包含特定数字的主要内容,如果未能解决你的问题,请参考以下文章