向ArrayList添加新的值集

时间:2017-08-02 11:07:25

标签: arrays windows powershell arraylist

所以我在$var中存储了以下ArrayList:

ip_prefix   region         string   
0.0.0.0/24  GLOBAL         Something
0.0.0.0/24  GLOBAL         Something
0.0.0.0/24  GLOBAL         Something
0.0.0.0/24  GLOBAL         Something

我需要为此添加一行,但以下代码会返回错误:

$var.add("127.0.0.1/32", "GLOBAL", "something")

错误:

Cannot find an overload for "Add" and the argument count: "3".
At line:1 char:1
+ $awsips.add("127.0.0.1/32", "GLOBAL", "SOMETHING")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

我确信这很简单,我必须调整,但谷歌的搜索让我绕圈子。

3 个答案:

答案 0 :(得分:2)

应该做的工作

   $obj = New-Object PSObject -Property @{            
        ip_prefix = "0.0.0.0/24"                
        region = "GLOBAL"              
        string = "Something"           
    }    

$var+= $obj      

答案 1 :(得分:2)

$var = New-Object System.Collections.ArrayList
$var.Add(@{"ip_prefix" = "0.0.0.0/24"; "region" = "GLOBAL"; string = "Something"})
$var.Add(@{"ip_prefix" = "127.0.0.1/32"; "region" = "GLOBAL"; string = "SOMETHING"})

$var
$var | %{ Write-Output "$($_.ip_prefix), $($_.region), $($_.string)" }

或者:

$var = @()
$var += @{"ip_prefix" = "0.0.0.0/24"; "region" = "GLOBAL"; string = "Something"}
$var += @{"ip_prefix" = "127.0.0.1/32"; "region" = "GLOBAL"; string = "SOMETHING"}

答案 2 :(得分:1)

您的输出表明您的数组列表包含自定义对象 ,其中包含属性ip_prefixregionstring

因此需要将具有所需属性值的单个对象 添加到数组列表中。

相比之下,您试图将 3个个体元素添加到数组列表中,这不仅在概念上是错误的,而且在语法上也是失败的,因为.Add() method只接受单个参数(从技术上讲,有一种方法可以添加多个项目,.AddRange())。

在PSv3 +中,语法[pscustomobject]@{...}从哈希表文字构造自定义对象,并保留条目的定义顺序。

$null = $var.Add(
  [pscustomobject] @{ ip_prefix="127.0.0.1/32"; region="GLOBAL"; string="something" }
)

请注意 $null = ...如何用于取消.Add()方法的输出(插入项目的索引)。

SQLAndOtherStuffGuy's answer在正确的轨道上,但是要注意$var += ...使用常规PowerShell数组($var)静默替换存储在[System.Object[]]中的数组列表< /强>