为什么要为$分配一个值?崩溃Powershell?

时间:2016-12-20 21:26:40

标签: powershell powershell-v5.0

在powershell中运行代码$? = $true会使程序崩溃,而#34; powershell已停止工作" Windows错误消息。

$true$host等内置错误会引发错误:Cannot overwrite variable true because it is read-only or constant.。其他人如$myinvocation$null只会被忽略。为什么$?有所不同?是否有关于内置哪个响应的文档? help about_automatic_variables没有任何详细信息。

我目前正在运行5.1版。我也尝试使用powershell -version $n '$? = $true'和版本3-5全部崩溃。有趣的是,版本1和版本2没有;他们抛出只读变量错误。

1 个答案:

答案 0 :(得分:4)

看起来这是known bug。 该修补程序已添加到当前正在运行的版本(6.0)中。您可以找到相关的提款请求here

我的胆量告诉我,不同行为(与其他自动变量相比)的原因是你和系统都试图在同一时间虚拟地写入这个变量。即使我不知道你为什么要写它(我怀疑这一切都始于一些if ($? = $true) ...),我确实认为一个真的很讨厌。