Powershell - 或多次检查

时间:2014-08-28 11:06:02

标签: powershell

我有以下脚本导致问题。它正在进行一个简单的检查,看看输入的字符数是7还是8。但是,即使输入7或8个字符,它也不会移动到else语句并显示“无效的字符数”。

如果我删除-or并坚持只检查一次,那么它可以正常工作。在使用-or运算符进行检查时,我似乎无法使其工作。我发现的所有例子似乎都暗示代码应该正常工作,所以有人能发现我缺少的东西吗?

Function number {
$global:change = read-host "Enter a number"
    if ($global:change.length -ne 7 -or $global:change.length -ne 8) {
        write-host $global:change.length
        write-host -foregroundcolor red "Invalid number of characters"
        number
    }
    else {
        write-host "You entered the correct amount of characters"
    }
}

number

2 个答案:

答案 0 :(得分:1)

你只需要稍微翻转一下你的逻辑就可以了。根据代码中的逻辑,其中一个案例将永远为真。如果您将代码更改为以下内容,您将获得所需的效果。

Function number {
    $global:change = read-host "Enter a number"
    if (($global:change.length -eq 7) -or ($global:change.length -eq 8))
    {
        write-host "You entered the correct amount of characters"
    }
    else
    {
        write-host $global:change.length
        write-host -foregroundcolor red "Invalid number of characters"
        number
    }    
}

number

这将测试您输入的值是7还是8,如果输入了其他值则循环。

答案 1 :(得分:0)

在-and中更改-or或以这种方式设置代码样式:

Function number {
$global:change = read-host "Enter a number"
    if ($global:change.length -eq 7 -or $global:change.length -eq 8) {
        write-host "You entered the correct amount of characters" 
    }
    else {
        write-host $global:change.length
        write-host -foregroundcolor red "Invalid number of characters"
        number
    }
}

number