powershell - 根据 Powershell 中对象的四个属性选择唯一对象
问题描述
这是对以下线程的跟进:
如何根据 powershell 中对象的两个属性选择唯一对象?
我有一个包含大约 20 个标题的 csv。我想对其中大约 4 个进行唯一排序,但要确保保留剩余的 16 个标题。
为了简化,我假设只有八个标题:
Host : ComputerA
IPv4 Address : 1.1.1.2
MAC Address : abcdef123456
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: : Computer of CFO
在链接线程中找到的建议的、经过调整的解决方案对我不起作用。
以供参考:
$csvDataUnique = $csvData |
Group-Object 'User Name','Computer Name' |
%{ $_.Group | Select 'User Name','Computer Name' -First 1} |
Sort 'User Name','Computer Name'
对于我的场景,我想在主机、IPv4 地址、MAC 地址和交换机 IP 上进行匹配,因此我尝试了以下命令:
$csvData = import-csv mydata.csv
$csvDataUnique = $csvData |
Group-Object 'Host', 'IPv4 Address', 'MAC Address', 'Switch IP' |
%{ $_.Group | Select 'Host', 'IPv4 Address', 'MAC Address', 'Switch IP' -First 1} |
Sort 'Host', 'IPv4 Address', 'MAC Address', 'Switch IP'
$csvDataUnique | export-csv "SortedData.csv"
当我尝试这样做时,它只输出四个选定的标题。如前所述,我希望也保留标题。
再次,供参考:
输入:
Host : ComputerA
IPv4 Address : 1.1.1.2
MAC Address : abcdef123455
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: : Computer of CFO
Host : ComputerA
IPv4 Address : 1.1.1.2
MAC Address : abcdef123455
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: :
Host : ComputerB
IPv4 Address : 1.1.1.3
MAC Address : abcdef123456
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: :
Host : ComputerB
IPv4 Address : 1.1.1.3
MAC Address : abcdef123456
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: :
期望的输出:
Host : ComputerA
IPv4 Address : 1.1.1.2
MAC Address : abcdef123455
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: : Computer of CFO
Host : ComputerB
IPv4 Address : 1.1.1.3
MAC Address : abcdef123456
Switch IP : 1.1.1.1
NIC Vendor : Dell
Device Type: : Workstation
Location : Office A
Comment: :
任何帮助,将不胜感激。
解决方案
您应该使用 Join-object 模块 https://www.powershellgallery.com/packages/Join-Object/2.0.1
这将允许您合并数据。
推荐阅读
- java - 在视图寻呼机中滑动一定次数后显示插页式广告
- c++ - 给一个任意容器,推导出一个相关类型的容器类型
- reactjs - 是否可以将 Capacitor 集成到在单水疗中心(微前端架构)上运行的项目中?
- javascript - 从另一个文件添加到数组 - node.js
- flutter - 如何在轮播滑块的每张幻灯片上添加按钮
- go - Go 有没有办法用一个“go build”命令构建多个可执行文件?(和 Rust 一样)?
- hadoop-yarn - 如何让 apache yarn 支持新的应用类型?
- javascript - 从 JavaScript 网络应用程序读取苹果联系人
- php - 如何在 laravel 中使用多个过滤器
- python - 文本未附加到文本文件中