获取数组的值而不是索引

时间:2019-07-10 12:56:10

标签: arrays powershell hashmap

我试图检索一个数组,最后我想将它们全部作为列表放入哈希中,但是我只得到索引,而不得到值列表。

$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"
foreach($item in $tempArray) {
    if ($item -notlike 123) {
        $arrayID = $testArray.Add($item);
    }
}

@{"mailboxes" = $arrayID};

因此,我希望看到类似的值

mailboxes {321, 453}

代替下面的索引。

mailboxes 1

2 个答案:

答案 0 :(得分:2)

ArrayList.Add()方法返回新数组元素的索引,因此您只需向$arrayID添加一个整数。相反:

$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"
foreach($item in $tempArray) {
    if ($item -notlike 123) {
        $testArray.Add($item);
    }
}
@{ "mailboxes" = $testArray};

返回:

mailboxes                      {321, 453}

答案 1 :(得分:0)

如果您的最终目标是得到这个

mailboxes {321, 453}

那么你可以做到

$OldArray = @("123", "321", "453")

[System.Collections.ArrayList]$NewArray = @()

foreach($item in $OldArray) {
    if ($item -ne 123) {
        $NewArray += item 
    }
}

@{"mailboxes" = $NewArray};

或者只是这个...

@{"mailboxes" =  @("123", "321", "453") | ? {$_ -ne 123}};

旁注: 默认情况下,@()创建一个大小固定的[system.array]。在+=上使用[system.array]将导致创建新的数组,并且需要将旧的数组内容复制到其中。 [System.Collections.ArrayList]具有动态大小,可让您轻松添加新项目。