根据Powershell中对象的四个属性选择唯一对象
这是以下线程的后续操作: 我有一个大约有20个标题的csv。 我想对其中的4个进行唯一排序,但要确保保留其余16个标题 为了简化,我将假设只有八个标题:根据Powershell中对象的四个属性选择唯一对象,powershell,Powershell,这是以下线程的后续操作: 我有一个大约有20个标题的csv。 我想对其中的4个进行唯一排序,但要确保保留其余16个标题 为了简化,我将假设只有八个标题: Host : ComputerA IPv4 Address : 1.1.1.2 MAC Address : abcdef123456 Switch IP : 1.1.1.1 N
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"
当我尝试这样做时,它只输出四个选定的标题。如前所述,我也希望保留标题
同样,供参考:
$csvDataUnique = $csvData |
Group-Object 'User Name','Computer Name' |
%{ $_.Group | Select 'User Name','Computer Name' -First 1} |
Sort 'User Name','Computer Name'
输入:
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: :
如果您有任何帮助,我们将不胜感激。您应该使用“连接对象”模块
这将允许您合并数据。您应该使用“连接对象”模块
这将允许您合并数据。我认为您指的是列,而不是标题。如果您按4个属性(列)分组,但希望输出中的所有属性,则需要确定每个组中的特定对象<代码>-第一个1选择第一个;如果您想要第一个对象及其所有属性,只需从
Select object
(Select
)调用中省略属性名称列表:%{$.Group | Select-first 1}
,或者更简洁有效地说:%{$.Group[0]}
@mklement0谢谢,我确实想要第一个值。我试试这个,然后再打给你。谢谢。我想你指的是列,而不是标题。如果你按4个属性(列)分组,但要在输出中包含所有属性,你需要决定从每个组中选择哪个特定对象<代码>-第一个1选择第一个;如果您想要第一个对象及其所有属性,只需从Select object
(Select
)调用中省略属性名称列表:%{$.Group | Select-first 1}
,或者更简洁有效地说:%{$.Group[0]}
@mklement0谢谢,我确实想要第一个值。我试试这个,然后再打给你。非常感谢。