PowerShell在`if($?= $ false)`上崩溃了

时间:2016-11-06 11:17:26

标签: powershell

我正在使用PowerShell,我遇到了一个可以轻松在我的计算机上重现的崩溃。

我不确定代码是否正确。但是,运行以下部分会导致powershell.exepowershell_ise.exe崩溃。我想我使用if ( $? = $false )是错误的,但在这种情况下不应该发生崩溃。删除If语句有助于避免崩溃。

我有什么遗漏吗?

我正在运行Windows 10 Pro和PowerShell 5.1.14393.206。

更新1

好的,感谢@Martin我知道我错误地使用了=而不是-eq。但为什么会发生这种崩溃?

更新2

向PowerShell UserVoice提交了错误报告:https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/16977433-assigning-a-value-to-false-crashes

更新3

这似乎是一个已知的错误:https://github.com/PowerShell/PowerShell/issues/2243应该尽快解决https://github.com/PowerShell/PowerShell/pull/2320

Test-Path "C:\test"
if ( $? = $false ) {
    Out-Host "Hello World"
}
Fault bucket 127386360339, type 5
Event Name: PowerShell
Response: Not available
Cab Id: 0

Problem signature:
P1: powershell.exe
P2: 10.0.14393.206
P3: stem.Management.Automation.PSInvalidCast
P4: stem.Management.Automation.PSInvalidCast
P5: ation.LanguagePrimitives.ThrowInvalidCastException
P6: ation.LanguagePrimitives.ThrowInvalidCastException
P7: Pipeli..ution Thread
P8: 
P9: 
P10: 

1 个答案:

答案 0 :(得分:9)

您的代码错误。您是assigning $false question mark variable,这是只读变量。您可能希望将=替换为-eq

Test-Path "C:\test"
if ( $? -eq $false ) {
    Out-Host "Hello World"
}