首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按共性分组

按共性分组
EN

Stack Overflow用户
提问于 2020-03-08 14:58:12
回答 1查看 45关注 0票数 3

试图找出如何为计算机数据集获取通用配置(产品安装和版本)。

数据的结构如下:

代码语言:javascript
复制
Device Name     Product Name    Product Version     OS
Computer 1      Visio           16.0.11929          Windows 10
Computer 2      Visio           16.0.11929          Windows 10
Computer 3      Visio           16.0.11000          Windows 7
Computer 4      Visio           16.0.11929          Windows 7
Computer 5      Visio           16.0.11000          Windows 10
Computer 1      PowerBI         2.72.5556           Windows 10
Computer 2      PowerBI         2.72.5556           Windows 10
Computer 5      PowerBI         2.72.5556           Windows 10
Computer 1      WebEx           40.1.8.5            Windows 10
Computer 2      WebEx           40.1.8.5            Windows 10
Computer 3      WebEx           38.1.6.3            Windows 7
Computer 5      WebEx           40.1.8.5            Windows 10

试图得到这样的输出:

代码语言:javascript
复制
Count   OS          Product Name    Product Version
2       Windows 10  Visio           16.0.11929
                    PowerBI         2.72.5556
                    WebEx           40.1.8.5

1       Windows 7   Visio           16.0.11000
                    WebEx           38.1.6.3

1       Windows 7   Visio           16.0.11929

1       Windows 10  Visio           16.0.11000
                    PowerBI         2.72.5556
                    WebEx           40.1.8.5

我想我可以用这样的方法,但是,它没有按正确的方式分组:

代码语言:javascript
复制
group-object -property 'Product Name', 'Product Version', OS
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-08 15:20:11

首先,重新排列数据,以便将属于同一台计算机的所有行分组在一起:

代码语言:javascript
复制
$Computers = $profiles |Group-Object 'Device Name' |ForEach-Object {
  [pscustomobject]@{
    Name = $_.Name
    OS   = $_.Group[0].OS
    Software = $_.Group |ForEach-Object {
      "$($_.'Product Name') $($_.'Product Version')" 
    } |Sort-Object
  }
}

既然在每台机器上安装的Software列表都是一个排序的字符串列表,将该列表转换为一个带有-join的字符串,我们现在就可以进行比较和分组了,这与您的预期输出更接近了:

代码语言:javascript
复制
PS C:\> $Computers |Group-Object OS,{$_.Software -join ', '} -NoElement |Sort Count -Descending |Format-Table -AutoSize

Count Name
----- ----
    2 Windows 10, PowerBI 2.72.5556, Visio 16.0.11929, WebEx 40.1.8.5
    1 Windows 10, PowerBI 2.72.5556, Visio 16.0.11000, WebEx 40.1.8.5
    1 Windows 7, Visio 16.0.11000, WebEx 38.1.6.3
    1 Windows 7, Visio 16.0.11929
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60588753

复制
相关文章

相似问题

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