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

And*_*ica 5 powershell powershell-5.0

$? = $true在powershell中运行代码会使程序崩溃,并显示"powershell已停止工作"窗口错误消息.

一些内置类似$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没有; 他们抛出只读变量错误.

Bar*_*ekB 4

看起来这是一个已知的错误。该修复已添加到当前正在运行的版本(6.0)中。您可以在此处找到相关的拉取请求。

我的直觉告诉我,不同行为的原因(与其他自动变量相比)是因为您和系统几乎同时尝试写入该变量。尽管我不知道你为什么想写信给它(我怀疑这一切都是从某些if ($? = $true)......开始的),但我确实同意这确实很令人讨厌。