Выполнение кода $? = $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 этого не делают; они вызывают ошибку переменной только для чтения.
Вы хотите разборки кода, который демонстрирует, почему он сбой, или вы хотите знать, должно ли оно это делать? Ответ на последний - это нет. Глупая ошибка - ошибка. PowerShell 3 был существенным новым выпуском, который перешел PowerShell в динамический язык Runtime; вместе с ним изменилась куча поведения. Некоторые полезные, некоторые удивительные, и некоторые просто багги. Это, по-видимому, один из последних. –
Мне было интересно, было ли это намеренно/задокументировано. Интересно о версии 3 и DLR, о которых я раньше не слышал. Есть ли где-нибудь отправить отчет об ошибке или я просто не буду беспокоиться об этом? –
Странно. PSVersion 5.0.10586.117 throws 'Не могу перезаписать переменную? потому что он доступен только для чтения или постоянным. ' –