Powershell Hashtable Count and Keys Eigenschaften werden überladen

Problemstellun: Die Eigenschaften Count und Keys können durch einen Hash-Wert überladen werden und geben nicht die erwarteten Werte zurück.

Mein Powershell-Code lautet:

$hash = @{}
$hash.one = "Number 1"
$hash.two = "Number 2"

"Count is [{0}]" -f $hash.Count
$hash.Count = "Count's Hash Value"
"Count is now [{0}]" -f $hash.Count

Meine Ausgabe lautet wie folgt:

Count is [2]
Count is now [Count's Hash Value]

Die Count-Eigenschaft wird überladen! Dieses Problem kann dazu führen, dass Benutzer Fehler nur schwer diagnostizieren können. Hatte mich eine Weile verwirrt. Das gleiche Problem gilt für "Schlüssel" oder in der Tat jede Eigenschaft.

Haben Sie Gedanken zu bewährten Methoden, um diese zu vermeiden? Vielleicht eine andere System.Collection? oder stellen Sie allen Schlüsseln ein Zeichen voran, z. B .:

$key = ":" + $key 

Allerdings ist es nicht sehr elegant. Selbst jetzt, wo ich das Problem kenne, werde ich es vermutlich vergessen und den gleichen Fehler erneut machen.

Ich persönlich denke, es ist ein Problem mit der Powershell-Sprachdefinition. Das . Die Notation (wie in $ hash.MyKey) sollte nicht zum Abrufen von Hash-Werten, sondern nur zum Abrufen von Eigenschaftswerten zulässig sein. Nur ein Gedanke. : -)

Danke für Ihre Hilfe

Antworten auf die Frage(2)

Ihre Antwort auf die Frage