Powershell if -lt 问题; returns 如果条件为假则为真

Powershell if -lt problem; returns true if the condition is false

Powershell 中的小脚本有问题。 这是我的脚本:

$number = Read-Host "Enter a number"
if ($number -lt 3){
    Write-Host "Number is too low."
    break
}

但是当我输入 25 时,if 条件仍然计算为真。

Read-Host 总是 returns 一个 string,并且 -lt 执行 lexical 比较字符串作为 LHS:

PS> '25' -lt 3
True  # because '2' comes lexically before '3'

您必须将从 Read-Host 返回的字符串转换为 数字 才能执行 数字 比较:

[int] $number = Read-Host "Enter a number"
if ($number -lt 3){
    Write-Host "Number is too low."
    break
}