You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell提取数据集每个唯一Key对应首个Value的问题求解

问题原因

你的原始代码存在两个问题:

  1. 匹配前缀的通配符逻辑错误:-Like 'Item#'只能匹配完全等于Item#的Key,要匹配所有以Item#开头的Key需要写为-Like 'Item#*'
  2. Select-Object -Unique只会对你选中的字段做全局去重,无法把Key和对应的第一条Value做绑定,要么只能拿到去重后的Key列表,要么只能拿到全局去重后的Value列表,不符合按Key分组取首条的需求。

解决代码

按Key分组后取每组第一条记录的Value即可实现需求:

$CollectionTable.GetEnumerator() | 
Where-Object { $_.Key -Like 'Item#*' } | 
Group-Object Key | 
ForEach-Object { $_.Group[0].Value }

运行上述代码就会直接输出1、4、1的目标结果。

如果需要同时输出对应Key和首个Value,可以用以下写法:

$CollectionTable.GetEnumerator() | 
Where-Object { $_.Key -Like 'Item#*' } | 
Group-Object Key | 
ForEach-Object {
    [PSCustomObject]@{
        键名 = $_.Name
        首次出现的值 = $_.Group[0].Value
    }
}

逻辑说明

  • Group-Object Key会把所有记录按Key字段分组,相同Key的所有记录会被存入对应组的Group属性中,组的Name属性就是对应的Key值
  • 遍历每个组时$_.Group[0]就是该Key第一条出现的原始记录,直接取它的Value属性就是你需要的结果

内容的提问来源于stack exchange,提问作者Aidage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:30:01