IF 多个条件 PowerShell

IF multiple conditions PowerShell

为什么总是 returns 我“输入无效...”?

$var = Read-Host -prompt "Insert a number from 1 to 6"
    
if (($var -ne 1)-or ($var -ne 2)-or ($var -ne 3)-or ($var -ne 4)-or ($var -ne 5)-or ($var -ne 6)){
Write-Host "Non valid input..."
pause; exit
} else {
Write-Host "OK."
pause; exit
}

因为您正在使用 -or 运算符来查看单个值。假设您输入 5。它不等于 1,因此触发块并将 Write-Host "Non valid input..." 写入控制台。如果您正在检查某物是否在范围内,请检查范围的高端和低端,例如:

if ( ($var -lt 1) -or ($var -gt 6) ){
    Write-Host "Non valid input..."
    pause
} 
else {
    Write-Host "OK."
    pause
}

您还可以将 $Var 约束为并且 [Int] 为:

[Int]$Var = Read-Host -prompt "Insert a number from 1 to 6"

这将有助于将输入限制为整数...

但是,这种类型的东西通常包含在一个循环中,因此如果进行了不可接受的输入,则会出现重新提示。

试试这个:

$ExcludeValues=@(1, 3, 5, 6)

$var = Read-Host -prompt "Insert a number from 1 to 6"
    
if ($var -in $ExcludeValues)
{
"Non valid input..."
} 
else 
{
"OK"
}