答案 0 :(得分:7)
正如一些人已经说过的那样,你正在进行字符串比较而不是数字比较
$Time = Get-Date -Format %H
$Time.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
为了做你想做的事,你可以将$Time
转换为数字
[int]$Time -lt 9
#or with a little trick
+$Time -lt 9
答案 1 :(得分:5)
Get-Date -Format
返回一个字符串。
这意味着你要将2个字母字符串“18”与9进行比较。
-lt
运算符(就像PowerShell中的任何其他比较运算符一样),在将字符串视为左手参数时,尝试将右侧参数转换为字符串,因此比较是有效:
"18" -lt "9"
由于“1”在字母意义上位于“9”之前,因此比较返回$true