我有一个包含以下内容的变量:
@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非常陌生,我想念什么?任何帮助将不胜感激!
答案 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")