首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组中的对象相互比较

将数组中的对象相互比较
EN

Stack Overflow用户
提问于 2018-12-04 22:58:56
回答 2查看 26关注 0票数 0

我有一个Powershell数组,如下所示:

代码语言:javascript
运行
复制
TSMServer Cluster       VM       
--------- -------       --       
HTS01     APP-P02       Server9839
HTS01     APP-P13       Server3221
HTS01     APP-P13       Server3230
HTS05     APP-P12       Server3182
HTS05     APP-P12       Server9829
GTS05     APP-P06       Server0057
GTS05     APP-P06       Server0421
GTS05     APP-P06       Server2426
GTS05     APP-P06       Server0286
GTS05     APP-P06       Server0302
GTS05     APP-P07       Server0312
GTS05     APP-P12       Server2845
GTS05     APP-P12       Server3135
HTS01     APP-P10       Server1052
HTS05     APP-P12       Server3155
HTS05     APP-P12       Server3185
HTS05     APP-P12       Server9830
...

我需要查找具有相同TSMserver和群集值的所有虚拟机。

我需要一个命令来检索(例如)这两个虚拟机共享相同的第一个值。

代码语言:javascript
运行
复制
TSMServer Cluster       VM       
--------- -------       --   
HTS01     APP-P13       Server3221
HTS01     APP-P13       Server3230

因此,实际上我需要将数组中的每个对象与其他对象进行比较,以找到前两个属性的公共值。

提前向您表示感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-12-04 23:21:54

您可以使用Group-Object cmdlet执行此操作,如下所示:

($servers是这里包含object数组的变量)

代码语言:javascript
运行
复制
$servers | Group-Object -Property TSMServer, Cluster | Where-Object { $_.Count -gt 1 } | ForEach-Object {
   $_.Group | Format-Table -AutoSize
}

对于给定的对象示例数组,运行上述命令将导致:

代码语言:javascript
运行
复制
TSMServer Cluster VM        
--------- ------- --        
HTS01     APP-P13 Server3221
HTS01     APP-P13 Server3230



TSMServer Cluster VM        
--------- ------- --        
HTS05     APP-P12 Server3182
HTS05     APP-P12 Server9829
HTS05     APP-P12 Server3155
HTS05     APP-P12 Server3185
HTS05     APP-P12 Server9830



TSMServer Cluster VM        
--------- ------- --        
GTS05     APP-P06 Server0057
GTS05     APP-P06 Server0421
GTS05     APP-P06 Server2426
GTS05     APP-P06 Server0286
GTS05     APP-P06 Server0302



TSMServer Cluster VM        
--------- ------- --        
GTS05     APP-P12 Server2845
GTS05     APP-P12 Server3135
票数 0
EN

Stack Overflow用户

发布于 2018-12-04 23:24:38

使用Group-Object

代码语言:javascript
运行
复制
$Servers = @"
TSMServer,Cluster,VM,
HTS01,APP-P02,Server9839
HTS01,APP-P13,Server3221
HTS01,APP-P13,Server3230
HTS05,APP-P12,Server3182
HTS05,APP-P12,Server9829
GTS05,APP-P06,Server0057
GTS05,APP-P06,Server0421
GTS05,APP-P06,Server2426
GTS05,APP-P06,Server0286
GTS05,APP-P06,Server0302
GTS05,APP-P07,Server0312
GTS05,APP-P12,Server2845
GTS05,APP-P12,Server3135
HTS01,APP-P10,Server1052
HTS05,APP-P12,Server3155
HTS05,APP-P12,Server3185
HTS05,APP-P12,Server9830
"@ | ConvertFrom-Csv 

$Servers | Sort-Object TSMServer,Cluster | Group-Object TSMServer,Cluster|
    ForEach-Object {
        $TSMServer,$Cluster = $_.Name -split ', '
        [PSCustomObject]@{
            TSMServer = $TSMServer
            Cluster   = $Cluster
            VMs       =($_.Group.VM | Sort-Object) -Join ','
        }
    }

示例输出:

代码语言:javascript
运行
复制
TSMServer Cluster VMs
--------- ------- ---
GTS05     APP-P06 Server0057,Server0286,Server0302,Server0421,Server2426
GTS05     APP-P07 Server0312
GTS05     APP-P12 Server2845,Server3135
HTS01     APP-P02 Server9839
HTS01     APP-P10 Server1052
HTS01     APP-P13 Server3221,Server3230
HTS05     APP-P12 Server3155,Server3182,Server3185,Server9829,Server9830
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53615693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档