【问题标题】:IF multiple conditions PowerShellIF 多个条件 PowerShell
【发布时间】:2021-04-22 21:28:29
【问题描述】:

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

$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,您的评价将是正确的,如果其中任何一个是正确的,那么您所写的几乎总是正确的。改用if ($var -notin 1..6)
  • @Daniel thx mate

标签: powershell if-statement multiple-conditions


【解决方案1】:

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

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

但是,这种类型的东西通常被包裹在一个循环中,因此如果输入不可接受,则可能会发生重新提示。

【讨论】:

  • 非常感谢,非常感谢
【解决方案2】:

试试这个:

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

【讨论】:

  • 谢谢你的朋友:)
猜你喜欢
  • 2020-11-12
  • 2018-09-18
  • 2016-06-17
  • 1970-01-01
  • 2013-09-29
  • 2016-01-20
  • 2015-02-07
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多