Powershell 按共性分组
试图找出如何获取计算机数据集的通用配置(产品安装和版本) 数据的结构如下所示:Powershell 按共性分组,powershell,Powershell,试图找出如何获取计算机数据集的通用配置(产品安装和版本) 数据的结构如下所示: 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
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
尝试获得如下输出:
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 |组对象“设备名”| ForEach对象{
[pscustomobject]@{
名称=$\名称
OS=$\组[0]。OS
软件=$\组\ ForEach对象{
“$($。'Product Name')$($。'Product Version')”
}|排序对象
}
}
现在,安装在每台机器上的软件
列表是一个已排序的字符串列表,使用-join
将列表转换为单个字符串将允许我们现在进行比较和分组,更接近您的预期输出:
PS C:\>$Computers |组对象操作系统,{$\.Software-join','}-NoElement |排序计数-降序|格式表-自动调整大小
计数名称
----- ----
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