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

如何使用PowerShell获取过去90天的网络登录历史记录

Windows 过去90天网络登录记录查询解决方案

前置注意事项

  • 执行所有命令前,请以管理员身份启动PowerShell
  • 若最终查询结果仍不足90天,先确认安全日志保留配置:打开事件查看器→Windows日志→安全→属性,查看最大日志文件大小与覆盖策略,若日志已被循环覆盖则无法恢复已删除的历史记录

可行实现命令

方法1:FilterHashTable写法(可读性更高,适合普通场景)

# 定义90天前的起始时间
$startTime = (Get-Date).AddDays(-90)
# 筛选符合条件的登录记录
Get-WinEvent -FilterHashtable @{
    ProviderName = 'Microsoft-Windows-Security-Auditing'
    ID = 4624 # 登录成功事件ID,如需查询登录失败可改为4625
    LogonType = 3 # 匹配网络登录类型
    StartTime = $startTime
}

方法2:XPath写法(查询性能更高,适合日志量极大的场景)

# 转换为UTC时间格式适配XPath语法
$startUtcTime = (Get-Date).AddDays(-90).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.000Z")
Get-WinEvent -ProviderName 'Microsoft-Windows-Security-Auditing' -FilterXPath "*[
    System[TimeCreated[@SystemTime >= '$startUtcTime']]
    and
    EventData[Data[@Name='LogonType']='3']
    and
    System[EventID=4624]
]"

可选优化

如果需要将结果导出到本地CSV文件方便排查,可在命令末尾追加:
| Export-Csv -Path "D:\最近90天网络登录记录.csv" -NoTypeInformation -Encoding UTF8

原命令失效原因说明

  1. 仅筛选LogonType=3的原命令未添加时间范围限制,且安全日志默认查询仅返回最近部分事件,再加上如果日志开启循环覆盖,更早的记录已被清理,所以只能查到近2天数据
  2. 调用Get-EventLog的原命令使用的是微软已弃用的旧cmdlet,且筛选的System日志下的Winlogon源仅覆盖本地交互类登录,不会返回全量网络登录事件,因此返回记录数量极少

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:36:04