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
?这不是我的预期。
答案 0 :(得分:4)
$v
的文字表示形式为System.Collections.Hashtable
([string]$v
或"$v"
)。 "$v.Count elements"
表示{text representation of $v}.Count elements
不是{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"
来获得预期的结果。