string - 如果-OR语句与比较运算符不按预期运行

标签 string powershell if-statement comparison

我有以下代码片段,无法弄清楚if为什么不起作用。

目的是从用户那里获得一些输入,如果输入是有效的,请继续。如果不是,则继续询问直到它是有效的条目。

无论我在第一个问题上输入的值是多少(例如wmic),总会输入do loop。例如,进入wmic时,在第二遍时,它会按要求中断do。无效的输入使我一直处于循环状态,直到我输入正确的输入为止。

$query_means = read-host 'Enter one of psinfo, powershell or wmic'

if ($query_means -ne "wmic" -OR $query_means -ne "psinfo" -OR $query_means -ne "powershell")
{
do {
$query_means = read-host 'Invalid entry. Enter one of psinfo, powershell or wmic'

}Until ($query_means -eq "wmic" -OR $query_means -eq "psinfo" -OR $query_means -eq "powershell")

}
until比较效果很好,可以在需要时中断。

最佳答案

您使用了错误的运算符。假设$query_meanswmic。然后,您的if语句的第一个条件是false,但是其他两个条件是true。由于您使用的是OR运算符,因此结果为true。使用OR运算符,您将始终至少有2个条件可以评估为true,因此总结果将始终为true

相反,您应该使用AND运算符,因为当两个字符串都不在您提供的列表中时,您希望条件有效。

因此,将-OR更改为-AND,您的代码应该可以:

if ($query_means -ne "wmic" -AND $query_means -ne "psinfo" -AND $query_means -ne "powershell")

关于string - 如果-OR语句与比较运算符不按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966658/

相关文章:

php - 在php中获取字符串中逗号字符之间的数字

java - 在不同平台上字节到字符串的转换,反之亦然

python - 如何使用python从以列中的数字开头的字符串中提取数字

windows - 如何在批处理文件或 PowerShell 脚本中多次运行命令 'x'?

javascript - 验证 3 个输入字段后按钮不会将我带到下一个 URL

sql - PLSQL:在 if 语句中使用子查询错误 PLS-00405

r - R函数每n个字开始换行吗?

c# - 测试 Powershell 脚本的正确性

powershell - TFS 构建 "PowerShell on Target Machines"步骤失败 : How to debug?

javascript - 这是什么意思 : if( variable ){/* do something */}