简单的PowerShell问题-如何将对象转换为arraylist

时间:2018-10-28 02:13:46

标签: arrays powershell object arraylist grouping

我有一个包含以下内容的变量:

@Override public void run()

这是使用Site IP walmart 10.20.30.40 walmart 10.20.30.41 walmart 10.20.30.42 target 10.20.30.50 target 10.20.30.51 hm 10.20.30.60 创建的对象。因此,如果我呼叫New-Object psobject -Property @{ site = <code> ; IP = <code> },它只会列出站点,而IP也是如此。

我想将其转换为按站点分组 的数组列表。

例如,结果输出应如下所示:

$obj.site

我希望能够从脚本中调用此脚本,例如出于在任何站点上添加或减去IP之类的原因。例如:

walmart     :  {10.20.30.40, 10.20.30.41, 10.20.30.42}
target      :  {10.20.30.50, 10.20.30.51}
hm          :  {10.20.30.60}

应列出以下IP:

$myArray.target 

而不是相同的格式-10.20.30.50 10.20.30.51

然后,我将使用Add方法向这些对象添加更多IP。

{10.20.30.50, 10.20.30.51}

我能得到的最接近的是以下内容(及其输出):

($myArray.walmart).Add("10.20.30.44")

有了这样的输出,我无法在$obj | Group-Object -Property Site | Select-Object Name,Group Name Group walmart {@{Site=walmart; IP=10.20.30.40}, @{Site=walmart; IP=10.20.30.41}, @{Site=walmart; IP=10.20.30.42} target {@{Site=target; IP=10.20.30.50}, @{Site=target; IP=10.20.30.51} hm {@{Site=hm; IP=10.20.30.60} 之类的特定网站上致电。

我对Powershell非常陌生,我想念什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

尝试类似这样的东西:

$Array=@(
[pscustomobject]@{Site='walmart'; ID='10.20.30.40'}
[pscustomobject]@{Site='walmart'; ID='10.20.30.41'}
[pscustomobject]@{Site='walmart'; ID='10.20.30.42'}
[pscustomobject]@{Site='target'; ID='10.20.30.50'}
[pscustomobject]@{Site='target'; ID='10.20.30.51'}
[pscustomobject]@{Site='hm'; ID='10.20.30.60'}
)

$Object=New-Object PSObject

$Array | group Site | %{

#create an new list with all id for the curretn group
$CurrentList = New-Object System.Collections.Generic.List[System.Object]
$_.group.ID | %{$CurrentList.Add($_)}

#Add property and list to the final object
Add-Member Noteproperty -Name $_.Name -value $CurrentList -InputObject $Object
}

#add element to a site
$Object.hm.Add("NewID")