我试图检索一个数组,最后我想将它们全部作为列表放入哈希中,但是我只得到索引,而不得到值列表。
$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
答案 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]
具有动态大小,可让您轻松添加新项目。