如果语句 - 四个变量,只有在运行时才运行

时间:2017-11-27 09:26:36

标签: powershell if-statement

我有以下内容,它不允许启用两个变量(布尔值为真):

If (($Variable1) -and ($Variable2)) {
   Write-Warning "Both variables have been enabled. Modify script to enable just one."
   Pause
   Break
}

这很好用,但是,如果存在4个可能的变量,我怎么能确保只启用一个?我想的是 - 和&组合-OR?

2 个答案:

答案 0 :(得分:3)

您可以添加布尔值并检查它们的计数:

If (([bool]$Variable1 + [bool]$Variable2 + [bool]$Variable3) -ne 1) {
    ...
}

但当然你必须确保这些实际上可以转换为布尔值。

<击> 这就是“独家或”(xor)的用途:

If ($Variable1 -xor $Variable2 -xor $Variable3) {
    ....
}

<击> About logical operators in Powershell

答案 1 :(得分:3)

无法想出一种避免使用计数器的方法。您来检查每个变量的值,并计算$true的数量。

$trueCount = 0
($variable1, $variable2, $variable3, $variable4) | % { if ($_ ) { $trueCount++} } 

if ($trueCount -eq 1) {
  write-host "only one variable true"
}
else {
  write-host "condition not met"
}