我在进行复合比较时遇到了问题。我还没有成功地使用过-ne或-or。下面是我认为它应该如何工作:
If (($Var -ne 'Y') -or ($Var -ne 'N') {
#Logic for error message and loop back to user promt
Else { #Go to another function }现在,当我尝试这样做时,无论我放入什么,我都会转到我的错误消息,由于循环返回到用户提示,所以它只会进行无限循环。即使我输入Y或N,我也会看到错误消息。
现在我已经将这段代码分解成下面的代码,这是可行的,但我更愿意做一个复合比较,如果变量既不是"y“也不是"n",则转到error (这是因为输入Y和N都会使脚本前进到代码的同一部分)。
If ($Var -eq 'Y') {
#Do action 1
}
ElseIf ($Var -eq 'N') {
#Do action 1
}
Else {
#Give error message and loop back to prompt
}发布于 2019-10-17 05:56:19
If (($Var -ne 'Y') -or ($Var -ne 'N')) {
#Logic for error message and loop back to user promt
Else { #Go to another function }这永远不会起作用,因为这两种情况中的一种总是正确的,并且您正在使用-or。从字面上讲,解决这个问题的方法有一百万种,但考虑到您已经展示的内容并推断出您给出了一个多步骤的过程,以下是我要做的:
$step1complete = $false
Write-Host "Some question"
do {
$var = Read-Host -Prompt "Enter Y or N"
if ($var -in @('Y','N')) {
$step1complete = $true
}
else {
Write-Host "Invalid option!"
}
} until ($step1complete)发布于 2019-10-17 05:50:41
If (($Var -ne 'Y') -or ($Var -ne 'N')) {这将永远是正确的。我认为你想在这里做一个"-and“。
如果你尝试这样做:
$Var = "1"
If (($Var -ne 'Y') -and ($Var -ne 'N')) {
#Logic for error message and loop back to user promt
"ne Y or ne N"
}
Else { #Go to another function
"else"
}它应该打印否则“
https://stackoverflow.com/questions/58422068
复制相似问题