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

PowerShell按计算机分组取各设备最新日期Top1记录的实现问题

问题原因

你现有命令的问题是Select-Object -First 1是对全局排序后的所有记录仅取第一条,自然只能返回所有记录中最新的单条结果,无法实现按计算机名分组后每组取最新的需求。

正确写法

方案1:分组后取每组第一条

$list | Sort-Object -Property Date -Descending | 
    Group-Object -Property 'Comp Name' | 
    ForEach-Object { $_.Group | Select-Object -First 1 }

逻辑说明:

  • 第一步先将所有记录按日期降序排序,保证每台计算机的最新记录排在该设备所有记录的最前面
  • 第二步按Comp Name字段分组,相同计算机名的记录会被归到同一组
  • 第三步遍历每个分组,取每组的第一条记录,就是对应计算机的最新记录

方案2:排序后直接去重(更简洁)

$list | Sort-Object -Property 'Comp Name', @{Expression='Date'; Descending=$true} | 
    Select-Object -Property 'Comp Name', 'Date' -Unique

逻辑说明:

  • 先按计算机名升序排序,同计算机名下按日期降序排序
  • 用Select-Object的-Unique参数按计算机名去重,自动保留每个计算机名的第一条(即最新)记录

注意事项

如果你的Date字段存储的是字符串而非日期类型,为了避免字符串排序逻辑错误,可修改排序规则强制转换为日期类型:

# 对应方案1的修改示例
$list | Sort-Object -Property { [DateTime]$_.Date } -Descending | 
    Group-Object -Property 'Comp Name' | 
    ForEach-Object { $_.Group | Select-Object -First 1 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:06