爲什麼以下三行在沒有PowerShell提示錯誤的情況下運行,但在腳本(foo.ps1)中運行時返回錯誤?在這兩種情況下,$b -eq $null
返回$true
和$b.GetType()
在$null
上返回調用錯誤,但在交互式會話中$b
有些不同。
$a = 1,2,3
[array]$b = $a | where {$false}
$b | where {$_.GetType()}
當作爲腳本運行,最後一行返回
你不能調用一個空值表達式的方法。
在試圖阻止數組展開的嘗試中,我遇到了這個問題。刪除[array]
會導致錯誤消失,我將繼續嘗試更好地理解展開規則(我希望$b
是一個空數組,但不是$null
),但我想了解其中的差異原因。
'$ a'是一個腳本塊。這是爲了這個目的嗎?爲什麼'where {$ false}'?在這個例子中'$ b'應該爲null,因爲where塊不通過管道。 – Matt
[相關](https://stackoverflow.com/questions/20022976/difference-between-powershell-console-and-powershell-ise) – Matt
並不意味着讓$ a成爲一個scriptblock,對不起。它本意是一個數組。我已經更新了它。幸運的是,它不會影響結果和潛在的問題。 – aggieNick02