如何根据powershell中对象的两个属性选择唯一对象? [英] How can you select unique objects based on two properties of an object in powershell?

查看:73
本文介绍了如何根据powershell中对象的两个属性选择唯一对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组具有 6 个属性的对象.看起来像这样:

I have an array of Objects that have 6 properties. That look like this:

$csvData
CURRENT DATE AND TIME : 07/10/2015 08:17:17 CST
USER NAME             : userName
COMPUTER NAME         : computerName
IP ADDRESS            : 192.168.1.1
LOGON SERVER          : logonServer
LOGON/OFF             : logon

我想创建一个不重复用户名和计算机名称的对象数组.如何在powershell中仅获得唯一的用户名/计算机名组合?最终,我想删除所有重复项并添加一个属性计数"来跟踪有多少重复项.

I want to create an array of objects where username and computer name are not duplicated. How can I get only the unique username/computername combo in powershell? Ultimately I would like to remove all duplicates and add a property 'Count' that keeps track of how many duplicates there are.

我试过了:

$csvDataUnique = $csvData | Select-Object 'User Name','Computer Name' -Unique
$csvDataUnique = $csvData | sort -Property 'User Name' | Get-Unique

推荐答案

与 Mathias 的回答非常相似,但将在输出中包含所有列:

Very similar to Mathias' answer, but will have all of the columns in the output:

$csvDataUnique = $csvData | 
  Group-Object 'User Name','Computer Name' | 
  %{ $_.Group | Select 'User Name','Computer Name' -First 1} | 
  Sort 'User Name','Computer Name' 

这篇关于如何根据powershell中对象的两个属性选择唯一对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆