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

修改PowerShell脚本:将Windows安全日志追加写入同一份CSV文件

修改PowerShell脚本实现安全日志追加写入CSV

以下是修改后的脚本,可将EventID为4740的Windows安全日志追加写入指定CSV文件,而非覆盖原有内容:

# 确保输出目录存在,避免因目录不存在报错
if (-not (Test-Path -Path C:\Daily_Report)) {
    New-Item -Path C:\Daily_Report -ItemType Directory | Out-Null
}

# 筛选EventID为4740的安全审计事件
$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
        TimeCreated     = $eventXml.System.TimeCreated.SystemTime -replace '\.\d+.*$'
        Computer        = $eventXml.System.Computer
        TargetUserName  = ($eventXml.EventData.Data | Where-Object { $_.Name -eq "TargetUserName"}).'#text'
        SubjectUserName = ($eventXml.EventData.Data | Where-Object { $_.Name -eq "SubjectUserName"}).'#text'
        HOSTName        = ($eventXml.EventData.Data | Where-Object { $_.Name -eq "TargetDomainName"}).'#text'
    }
}

# 追加写入CSV文件,自动处理表头(文件不存在时创建并写入表头,存在时仅追加数据)
$result | Export-Csv -Path C:\Daily_Report\$((Get-Date).ToString("dd-MM-yyyy")).csv -NoTypeInformation -Append

关键修改说明:

  1. 新增目录检查:添加目录存在性判断逻辑,自动创建输出目录C:\Daily_Report,避免运行时因目录缺失抛出错误。
  2. 启用追加模式:在Export-Csv命令中添加-Append参数,这是实现追加功能的核心:
    • 若目标CSV文件不存在,脚本会自动创建文件并写入表头和数据;
    • 若文件已存在,仅将新查询到的日志数据追加到文件末尾,不会覆盖原有内容,也不会重复写入表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:03:20