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

如何解析Get-WinEvent获取的事件ID10036日志提取用户名与IP地址

Windows系统日志10036事件字段提取方案

直接运行以下PowerShell脚本即可输出要求的分号分隔结构化结果,优先读取事件原生结构化属性,比纯文本正则解析稳定性更高,兼容不同Windows版本、中英文系统环境:

# 输出表头
"User;Address"
Get-WinEvent -FilterHashtable @{LogName='System';ID='10036'} -MaxEvents 5 | ForEach-Object {
    # 加载事件XML结构化数据
    $eventXml = [xml]$_.ToXml()
    $nsMgr = New-Object System.Xml.XmlNamespaceManager($eventXml.NameTable)
    $nsMgr.AddNamespace("ev", "http://schemas.microsoft.com/win/2004/08/events/event")
    # 提取对应结构化字段:第6个Data节点为用户名,第9个Data节点为源IP
    $user = $eventXml.SelectSingleNode("//ev:EventData/ev:Data[6]", $nsMgr).InnerText
    $address = $eventXml.SelectSingleNode("//ev:EventData/ev:Data[9]", $nsMgr).InnerText

    # 兜底:结构化字段提取失败时,用正则匹配消息正文
    if (-not $user -or -not $address) {
        if ($_.Message -match '用户\s*(?<user>\S+)\s*.*?源地址\s*(?<addr>(\d{1,3}\.){3}\d{1,3}|[0-9a-fA-F:]+)') {
            $user = $matches.user
            $address = $matches.addr
        }
    }

    "$user;$address"
}

说明

  • 脚本默认查询最近5条符合条件的事件,可修改-MaxEvents后的数值调整查询条数,移除该参数则查询全量历史10036事件
  • 内置兜底正则同时支持IPv4、IPv6地址识别,适配中文系统默认事件文案
  • 若使用英文系统,只需将正则里的用户替换为user、源地址替换为source address即可正常匹配

输出示例

User;Address
CONTOSO\wangwu;192.168.3.42
CORP\zhaoliu;10.0.12.87
LOCAL\admin;172.16.5.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:30:10