哈希表和数组powershell

时间:2014-07-14 13:38:37

标签: powershell

我需要存储在hashtable 2 int变量的Item中。但无法理解如何存储它:

    $hash = @{}
    if($hash.contains($name) -eq $False){
        $value = 1
        $arr = @($my_var;$value)
        $hash.add($name,$arr)
    }else{
        $value = $hash.item($name)
        $value[1]++ #PROBLEM HERE
        $hash.item($name)[0] = $my_var
        $hash.item($name)[1] = $value
    }

问题是$value[1]不存在(注1),$value[0]还包含空格$my_var$value

注1 - '++'运算符仅适用于数字。操作数是'System.Object []'。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题。您要更新int - 值吗?如果是这样,那么你的问题是你覆盖了int - 存储在$hash.item($name)[1]中的值,不只是一个int,而是整个数组。你基本上是在创造这个:

$hash.item($name) = @($my_var, $value, @($my_var, $value+1))

您可以通过更新此行来解决此问题:

$hash.item($name)[1] = $value

$hash.item($name)[1] = $value[1]

如果$my_var始终是相同的值,您可以通过替换整个项目来清理它:

$my_var = "test"
$name = "nametest"
#$hash = @{}   #ran this first time to create ht before commenting it out to avoid overwriting the ht

if($hash.Contains($name) -eq $False){
    $value = 1
    $arr = @($my_var;$value)
    $hash.add($name,$arr)
}else{
    $value = $hash.item($name)
    $value[1]++
    $hash.item($name) = $value
}