gpt4 book ai didi

powershell - 按共性分组

转载 作者:行者123 更新时间:2023-12-02 23:50:28 26 4
gpt4 key购买 nike

试图弄清楚如何为机器数据集获取通用配置(安装的产品和版本)。

数据结构如下:

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

试图得到这样的输出:

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

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

group-object -property 'Product Name', 'Product Version', OS

最佳答案

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

$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 将列表转换为单个字符串将使我们能够比较和现在按此分组,更接近您的预期输出:

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

关于powershell - 按共性分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60588753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com