2

Write-Host似乎没有解析变量的属性很奇怪。

PS C:\Users\x> $v=@{item1="kkk";item2="aaa"}
PS C:\Users\x> $v.Keys|%{$v.Item($_)}
kkk
aaa
PS C:\Users\x> Write-Host "$v.Count elements"
System.Collections.Hashtable.Count elements
PS C:\Users\x> $v.Count
2
PS C:\Users\x> $v
Name                           Value
----                           -----
item1                          kkk
item2                          aaa

你可以看到,$v是一个哈希表和

$v.Count

打印 2. 但是为什么

Write-Host "$v.Count"

打印出来System.Collections.Hashtable.Count?这不是我所期望的。

4

1 回答 1

6

$vis System.Collections.Hashtable([string]$v"$v")的文本表示。并且"$v.Count elements"意味着{text representation of $v}.Count elementsnot {text representation of $v.Count} elements,所以对我来说,预计你会得到System.Collections.Hashtable.Count elements结果。

Write-Host不负责扩展双引号字符串。它在调用之前由 PowerShell 完成Write-Host

"$v.Count" 

打印 2

对我来说,它打印出来System.Collections.Hashtable.Count。不是由2打印的。$v.Count"$v.Count"

您应该使用"$($v.Count) elements"来获得预期的结果。

于 2015-05-18T02:38:38.160 回答