PowerShell多条件整数判断:如何判断变量存在且值非0?
问题分析与解决方案
核心需求
要实现的逻辑是:变量存在,并且存在时它的值不等于0,满足这两个条件才输出ok,否则输出not ok。
测试代码问题拆解
第一个测试的逻辑错误
你第一段代码用了-or运算符,条件逻辑是:
( Test-Path !variable:AllDbAvail ) -or ( $AllDbAvail -ne $int0 )
这个逻辑的意思是:变量不存在,或者 变量值不等于0的时候输出ok。但你测试的场景是变量存在且值为0,两个条件都不满足,所以输出not ok——这是逻辑写错了,不是0的判定有特殊情况。
第二个测试的预期结果
你用-and的逻辑是对的:
( Test-Path variable:AllDbAvail ) -and ( $AllDbAvail -ne $int0 )
这个逻辑是:变量存在 并且 变量值不等于0时才输出ok。
- 变量不存在时,第一个条件不成立,输出
not ok(符合预期) - 变量存在但值为0时,第二个条件不成立,输出
not ok(这也符合需求,因为你要的是值≠0的情况)
如果要验证正确触发ok的场景,把$AllDbAvail设为非0值就行:
[int]$AllDbAvail = 1 [int]$int0 = 0 if ( ( Test-Path variable:AllDbAvail ) -and ( $AllDbAvail -ne $int0 ) ) {"ok"} else {"not ok"}
这时会输出ok,完全符合预期。
关于PowerShell的几个小细节
你提到的“数字0的特殊情况”其实是误解,PowerShell里int类型的0和其他int值的判定逻辑完全一致,只要条件写对就能得到正确结果。另外:
- 创建int变量时确实可以省略
[int]前缀,PowerShell会自动推断类型(比如$AllDbAvail = 0默认就是int类型) - 要表示字符串类型的0,必须用双引号包裹(
"0"),否则会被识别为数字类型。
内容的提问来源于stack exchange,提问作者ilRobby
相关产品推荐
相关产品推荐

