2017-04-25 61 views
4

Screenshot爲什麼powershell堅持18小於9?

爲什麼會出現這種情況? (Get-Date設置爲18現在...) 這可能是Get-Date格式化數字的方式嗎? 我很難過....

+1

我不知道powershell,但看起來它是在做一個字符串比較,而不是數字比較。 –

回答

5

Get-Date -Format返回一個字符串。

這意味着你用9

-lt運營商將(就像在PowerShell中的任何其他比較操作),在看到一個字符串作爲左手比較2個字母串「18」論點,試圖將右手參數轉換爲字符串一樣,所以比較有效的是:

"18" -lt "9" 

由於「1」來之前,「9」的字母意義上說,比較返回$true

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 
+0

這讓人感覺很棒!!!!!感謝大家!!!! –