如果使用-ne和-or运算符,则不在powershell中工作
以下带有-ne和-or运算符的if语句不起作用(注意,我没有包括大括号)$MyVariable是从函数中的参数输入的整数,并让if语句检查该值。我想要的是,如果$MyVariable不等于16、24或32,则返回错误消息,否则继续。将函数调用为FunctionName 16 功能定义如下:如果使用-ne和-or运算符,则不在powershell中工作,powershell,Powershell,以下带有-ne和-or运算符的if语句不起作用(注意,我没有包括大括号)$MyVariable是从函数中的参数输入的整数,并让if语句检查该值。我想要的是,如果$MyVariable不等于16、24或32,则返回错误消息,否则继续。将函数调用为FunctionName 16 功能定义如下: function FunctionName { param([Parameter(Mandatory = $false, Position = 0)] [AllowNull()]
function FunctionName
{
param([Parameter(Mandatory = $false, Position = 0)]
[AllowNull()]
[int] $MyVariable,
[Parameter(Mandatory = $false, Position = 1)]
[bool] $MyVariable2,
[Parameter(Mandatory = $false, Position = 2)]
[bool] $MyVariable3);
if (...
}
以下if语句中我做错了什么
if ($MyVariable -ne 16 -or $MyVariable -ne 24 -or $MyVariable -ne 32)...
if (16 -ne $MyVariable -or 24 -ne $MyVariable -or 32 -ne $MyVariable)...
if (($MyVariable -ne 16) -or ($MyVariable -ne 24) -or ($MyVariable -ne 32))...
如果三个相等比较中的任何一个返回
$false
,则其他两个必须返回true(如果$x
等于16,则永远不会等于24或32),因此语句的计算结果将始终为$true
将-或
更改为-和
以测试所有3种情况:
if ($MyVariable -ne 16 -and $MyVariable -ne 24 -and $MyVariable -ne 32){}
或检查其是否相等:
if ($MyVariable -eq 16 -or $MyVariable -eq 24 -or $MyVariable -eq 32){}
或者,改用-contains
运算符:
if (@(16,24,32) -contains $MyVariable){}
逻辑缺陷。至少有两个
-ne
比较总是正确的。改为使用-和
,或使用-eq
进行比较。在重新审视逻辑之后,它是有意义的。非常感谢。