Write-Host无法解析变量的属性

时间:2015-05-18 02:24:03

标签: variables powershell properties write-host

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?这不是我的预期。

1 个答案:

答案 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"来获得预期的结果。