powershell - Powershell:在一个属性上获取唯一性,同时对两个属性进行排序
问题描述
我正在使用以下两个语句生成一个列表:
$Directmembers = $memberdata | where-object {($_.huntpilot_number -eq $e.'Hunt Pilot number') -and ($_.directoryuri -like '*@*.*')} | select-object huntpilot_number, directoryuri, @{n="Origin";e={"DirectMember"}}
$Pickupmembers = $pickupdata | where-object {($_.huntpilot_number -eq $e.'Hunt Pilot number') -and ($_.directoryuri -like '*@*.*')} | select-object huntpilot_number, directoryuri, @{n="Origin";e={"PickupMember"}}
$members += $Directmembers
$members += $Pickupmembers
最后一部分只选择我感兴趣的两列,并添加一个新属性 Origin。(然后将它们组合在 $members 中)
现在,我想获取directoryuri
此列表中的每个唯一值;但如果 Origin 是 DirectMember,我希望保留它,其余的被删除。
($members | Sort-Object directoryuri -Unique)
这将返回唯一条目,但不Origin
考虑。
当我在 中添加 Origin 参数时Sort-Object
,它们返回 2 个条目:因为它们不再彼此唯一。
我如何在 Select-Unique 时优先考虑 Origin DirectMember?
解决方案
$members |
# Group by directoryuri
Group-Object directoryuri |
ForEach-Object {
# For each group check if an item exists with Origin = 'DirectMember' and output it
if ($match = $_.group | Where-Object Origin -EQ 'DirectMember') {
$match | Select-Object -First 1
}
# else output the other
else {
$_.group | Select-Object -First 1
}
}
推荐阅读
- unity3d - 禁用附加到的游戏对象后,Unity脚本未禁用
- awk - awk 将一个文件分成 n 个文件,每个文件都有它的标题
- swift - dyld:库未加载(多项目工作区)
- marklogic - 使用 XML 文档中的值搜索 Xpath 并从 Marklogic 获取文档 URI
- python - 如何为 Jenkins 设置 Python 目录结构?
- apache-spark - Spark Streaming 跨批次维护流数据
- c++ - 阅读简单的 .txt 时,我得到了垃圾值
- python - 如何读取在同一列中具有多个 json 值的数据框
- sql - SQL Server - 在函数中创建超时异常
- sql - 使用 WHERE 和 COUNT 在 sql 查询中返回错误值