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

如何用PowerShell导入CSV并获取指定主机的最新登录日期?

提取CSV中指定主机的最新登录记录

要解决这个问题,核心是先将CSV中的日期字符串转换为可比较的DateTime类型,再通过分组或过滤后排序取最新记录。以下是具体实现:

完整脚本(获取所有主机的最新记录)

# 替换为你的CSV文件实际路径
$csvPath = ".\login_records.csv"

# 导入CSV并将Date列转换为DateTime类型(确保时间比较准确)
$loginData = Import-Csv -Path $csvPath | ForEach-Object {
    $_ | Add-Member -NotePropertyName "DateTime" -NotePropertyValue ([DateTime]$_.Date) -Force
    $_
}

# 按主机名分组,每组内按时间降序排序,取第一条即为最新登录记录
$latestPerPC = $loginData | Group-Object -Property "Computer Name" | ForEach-Object {
    $_.Group | Sort-Object -Property DateTime -Descending | Select-Object "Computer Name", Username, Date -First 1
}

# 输出所有主机的最新登录结果
$latestPerPC

仅获取指定主机(如mypc1)的最新记录

如果只需要单个目标主机的结果,无需分组,直接过滤后排序即可:

$targetComputer = "mypc1"
$latestLogin = $loginData | Where-Object { $_."Computer Name" -eq $targetComputer } | Sort-Object DateTime -Descending | Select-Object "Computer Name", Username, Date -First 1

# 输出指定主机的最新登录记录
$latestLogin

关键注意点

你之前尝试失败的常见原因是未将Date列转换为DateTime类型:CSV导入后日期默认是字符串格式,字符串的排序逻辑和时间先后排序不一致(格式异常时会直接出错)。转换为DateTime类型后,才能准确比较时间的早晚。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:15:09