如果使用-ne和-or运算符,则不在powershell中工作

如果使用-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()]

以下带有-ne和-or运算符的if语句不起作用(注意,我没有包括大括号)$MyVariable是从函数中的参数输入的整数,并让if语句检查该值。我想要的是,如果$MyVariable不等于16、24或32,则返回错误消息,否则继续。将函数调用为FunctionName 16

功能定义如下:

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
进行比较。在重新审视逻辑之后,它是有意义的。非常感谢。