这个问题在这里已经有了答案:
PowerShell crashes on `if ( $? = $false )`
(1 个回答)
4年前关闭。
运行代码 $? = $true
在 powershell 中,程序崩溃并显示“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 没有;他们抛出只读变量错误。
最佳答案
看起来这是一个 known bug .
该修复程序已添加到当前正在开发的版本 (6.0) 中。你可以找到相关的pull request here .
我的胆量告诉我,不同行为(与其他自动变量相比)的原因是您和系统都试图几乎同时写入此变量。即使我不知道你为什么要写信给它(我怀疑这一切都是从一些 if ($? = $true)
开始的……),但我确实同意一个人真的很讨厌。
关于powershell - 为什么要为 $ 赋值?崩溃Powershell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251513/