2012-11-09 40 views
6

我是新来的PowerShell,并试图获得一个HashTable的长度(在for循环中使用),但我似乎无法获得输出任何东西的HashTable的长度。在PowerShell中获取HashTable的长度

$user = @{} 
$user[0] = @{} 
$user[0]["name"] = "bswinnerton" 
$user[0]["car"] = "honda" 

$user[1] = @{} 
$user[1]["name"] = "jschmoe" 
$user[1]["car"] = "mazda" 

write-output $user.length #nothing outputs here 

for ($i = 0; $i -lt $user.length; $i++) 
{ 
    #write-output $user[0]["name"] 
} 

回答

17

@{}声明一个哈希表,而@()声明数组

您可以使用

$user.count 

找到你HashTablelength

如果你这样做:

$user | get-member 

你可以看到一个对象的所有方法和属性。

$user.gettype() 

返回您拥有的对象的类型。

+0

+1指出get-member。不知怎的,我从来没有学过这个,它将使事情变得更容易。 – Logan

3

$user是一个哈希表,所以你应该用户$user.count代替。

0

这不是一个数组,而是一个散列表。改为使用.count

write-output $user.count