den Code $? = $true
in Powershell-Lauf stürzt das Programm mit einem „Powershell funktioniert nicht mehr“ Windows-Fehlermeldung.
Einige eingebaute wie $true
oder $host
werfen einen Fehler: Cannot overwrite variable true because it is read-only or constant.
. Andere wie $myinvocation
oder $null
werden einfach ignoriert. Warum ist $?
anders? Gibt es eine Dokumentation, auf welche Builttins welche Antwort hat? help about_automatic_variables
hat keine Details.
renne ich zur Zeit Version 5.1. Ich habe auch versucht, powershell -version $n '$? = $true'
und alle Versionen 3-5 Crash. Interessanterweise, Versionen 1 und 2 nicht; Sie werfen den schreibgeschützten Variablenfehler.
Haben Sie eine Demontage des Codes möchten, warum es zeigt abstürzt, oder wollen Sie wissen, ob es dies tun soll ist? Die Antwort darauf ist ein definitives Nein. Silly Bug ist ein Fehler. PowerShell 3 war eine wesentliche neue Version, die PowerShell in die Dynamic Language Runtime überführte. ein Bündel von Verhaltensweisen änderte sich mit ihm. Einige nützlich, einige überraschend und einige einfach Buggy. Dies scheint einer der letzteren Fälle zu sein. –
Ich fragte mich, ob es beabsichtigt/dokumentiert war. Interessant über Version 3 und das DLR, davon hatte ich vorher noch nichts gehört. Gibt es irgendwo einen Fehlerbericht oder sollte ich mir darüber keine Sorgen machen? –
Seltsam. PSVersion 5.0.10586.117 wirft 'Kann Variable nicht überschreiben? weil es schreibgeschützt oder konstant ist. –