Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Powershell中对象的四个属性选择唯一对象_Powershell - Fatal编程技术网

根据Powershell中对象的四个属性选择唯一对象

根据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

这是以下线程的后续操作:

我有一个大约有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"
当我尝试这样做时,它只输出四个选定的标题。如前所述,我也希望保留标题

同样,供参考:

$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谢谢,我确实想要第一个值。我试试这个,然后再打给你。非常感谢。