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

PowerShell导出安全事件4740 XML至CSV无法提取指定用户名问题

问题说明

需要从Windows安全事件日志(事件ID 4740,账号锁定事件)的XML视图中提取两个特定字段:

  • Target username(目标用户名,示例值BRSYSAD)
  • Subject username(主题用户名,示例值900011-LT)

原有脚本直接读取$eventXml.EventData.Data会返回所有EventData节点的集合,无法单独提取指定字段的值。

修正后脚本
$filter = "*[System[EventID=4740 and Provider[@Name='Microsoft-Windows-Security-Auditing']]]"
$result = Get-WinEvent -LogName Security -FilterXPath $filter | ForEach-Object {
    # 将事件内容转换为XML格式,选取Event根节点
    $eventXml = ([xml]$_.ToXml()).Event
    # 组装需要导出的字段
    [PSCustomObject]@{
        EventID         = $eventXml.System.EventID.'#text'
        TimeCreated     = $eventXml.System.TimeCreated.SystemTime -replace '\.\d+.*$'
        Computer        = $eventXml.System.Computer
        SubjectUserName = ($eventXml.EventData.Data | Where-Object Name -eq 'SubjectUserName').'#text'
        TargetUserName  = ($eventXml.EventData.Data | Where-Object Name -eq 'TargetUserName').'#text'
    }
}

# 控制台以自适应表格格式输出结果
$result | Format-Table -AutoSize

# 结果导出为CSV文件,指定UTF8编码避免乱码
$result | Export-Csv -Path 'C:\MyProgr_Events_302.csv' -NoTypeInformation -Encoding UTF8
关键修改点
  • 移除原有脚本中直接读取全部Data节点的Data = $eventXml.EventData.Data配置
  • 新增按Data节点Name属性筛选的逻辑,精准匹配SubjectUserName和TargetUserName两个字段的取值
  • 导出CSV时追加-Encoding UTF8参数,解决默认编码导致的非英文字符乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:57:27