当前位置: 首页 > 知识库问答 >
问题:

将数组的对象相互比较

吕征
2023-03-14

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

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和集群的所有VM都具有相同的值。

我需要一个命令来检索(例如)这两个VM,因为它们共享相同的第一个值。

TSMServer Cluster       VM       
--------- -------       --   
HTS01     APP-P13       Server3221
HTS01     APP-P13       Server3230

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

提前非常感谢!

共有2个答案

公良俊楚
2023-03-14

使用组对象

$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 ','
        }
    }

样本输出:

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
宁浩博
2023-03-14

您可以使用Group Object cmdlet执行此操作,如下所示:
($servers是此处包含对象数组的变量)

$servers | Group-Object -Property TSMServer, Cluster | Where-Object { $_.Count -gt 1 } | ForEach-Object {
   $_.Group | Format-Table -AutoSize
}

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

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
 类似资料:
  • 我理解A,我们在那里有一个原语;没有引用。by-复制。 我希望B和C的行为与D相同——根据它们被给予的引用而改变。 为什么这个对象引用另一个对象只对用户定义的对象“起作用”,而不是整数、字符串等。?

  • 我目前正在尝试制作一个赛车模拟器,以便学习一些Java。我制作了每个车手和他们的车的对象: 每个车手都有许多价值观,这些价值观决定了他在比赛中的表现: 然后,当我进入比赛状态并尝试模拟第一场比赛时,我得到了车手总体的变量(值为50-100),并在总体上添加了一个“运气”因素以获得结果。 控制台输出示例: 我不知道如何在不排序的情况下对“CreateDrivers.drivers[x]”的所有值进行

  • 本文向大家介绍php对象和数组相互转换的方法,包括了php对象和数组相互转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php对象和数组相互转换的方法。分享给大家供大家参考。具体分析如下: 这里定义2个php匿名对象和数组相互转换的函数,代码如下: 用法示例如下: 希望本文所述对大家的php程序设计有所帮助。

  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。

  • 问题内容: 我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗? 问题答案: 编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算

  • 我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用