所以我在$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
我确信这很简单,我必须调整,但谷歌的搜索让我绕圈子。
答案 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_prefix
,region
和string
。
因此需要将具有所需属性值的单个对象 添加到数组列表中。
相比之下,您试图将 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[]]
中的数组列表< /强>