2016-11-26 48 views
0

所以這看起來非常簡單,並且很容易猜出結果,但我似乎在PowerShell中得到了非常奇怪的結果。PowerShell中不正確的運算符結果

所以基本上我正在構建一個數組中有未知數量的對象,然後運行一個運算符對.Count屬性。

例子:

$a = New-Object System.Collections.ArrayList 
$n = 0 

while ($n -ne 27) {$n++; $a.Add("Test line")} 

# Array built, the .Count property should be 27 

$bool = $false 
$number = 2 

if ($number -gt $a.Count) {$bool = $true} 

# This correctly gives me $bool as $false 

$number = 3 

if ($number -gt $a.Count) {$bool = $true} 

# This incorrectly gives me $bool as $true, and does so when $number is 
# greater than 3. 

在這個任何想法?我從來沒有見過這個。上面是一個簡單的例子,但基本上我把對象拉到一個數組中,獲得用戶輸入Read-Host,我想比較用戶輸入是否大於(-gt)該數組的總數。

+0

以上示例正常工作,是否有可能在ISE中運行腳本,出於某種原因,您認爲不正確的$ bool值存儲在運行之間?或者是否有可能在您的原始代碼中,您在檢查之間設置了$ bool值,並且只假定$ bool是作爲特定檢查的結果分配的?嘗試添加到您的代碼語句中,以在代碼的每個部分之後顯示$ bool值,或者在ISE中使用斷點來縮小這個不正確的值來自哪裏。 –

+0

ISE將在腳本執行之間保留變量值。而控制檯沒有,除非當然變量範圍被修改。 – user4317867

+0

好的建議。我在ISE中寫這篇文章,但在PowerShell控制檯中運行時也證實了這一點。運行之間不保存變量,使用斷點,甚至使用寫主機在每個步驟中寫入每個變量的值。我確認,如果$ number是0,1或2,它可以正常工作。但是,如果它超過3個,則表現不正確。我再次測試過,我覺得我瘋了! – morjit

回答