Contagem de hash do Powershell e propriedades das chaves ficando sobrecarregadas

Declaração do Problema: As propriedades Count e Keys podem ser sobrecarregadas por um valor de hash e não retornar seus valores esperados.

Meu código do Powershell é este:

$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

Minha saída é esta:

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

A propriedade Count fica sobrecarregada! Esse problema pode fazer com que os usuários sejam muito difíceis de diagnosticar bugs. Me confundiu por um bom tempo. O mesmo problema se aplica a "Chaves" ou a qualquer Propriedade.

Você tem alguma opinião sobre as melhores práticas para evitar essa? Talvez um System.Collection diferente? ou prefixar todas as chaves com um caractere como:

$key = ":" + $key 

No entanto, não é muito elegante. Mesmo agora que conheço o problema, suspeito que vou esquecer e cometer o mesmo erro novamente.

Pessoalmente, acho que é um problema com a definição de idioma do Powershell. O . A notação (como em $ hash.MyKey) não deve ser permitida para recuperar valores de hash, apenas para recuperar valores de Propriedade. Apenas um pensamento. :-)

Obrigado pela ajuda.

questionAnswers(1)

yourAnswerToTheQuestion