IF多条件PowerShell

cygmwpex  于 2023-01-26  发布在  Shell
关注(0)|答案(2)|浏览(157)

为什么它总是返回“无效输入..."?

$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
}
bf1o4zei

bf1o4zei1#

因为您使用-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"

这将有助于限制输入整数...
然而,这种类型的事情通常被 Package 在一个循环中,这样,如果输入了不可接受的内容,就会出现重新提示。

iugsix8n

iugsix8n2#

试试这个:

$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"
}

相关问题