1

我需要将 Windows 安全事件日志导出到 CSV 文件,以便快速审核已删除的文件。我只需要 CSV 文件中的特定信息行,特别是在“消息”字段中。我的命令如下:

Get-EventLog "Security" -before 4/10/2013 -InstanceId 4663 | select-object Index,TimeGenerated,Message | export-csv c:\export.csv

输出如下所示:

Index         : 244336
TimeGenerated : 4/9/2013 6:06:33 PM
Message       : An attempt was made to access an object.

            Subject:
                Security ID:        S-0-0-00-0000000-0000000-000000
            37-1111
                Account Name:        joeblow
                Account Domain:        contoso
                Logon ID:        0x888210

            Object:
                Object Server:    Security
                Object Type:    File
                Object Name:    C:\files\Important_doc.xls

                Handle ID:    0x2178

            Process Information:
                Process ID:    0x4
                Process Name:    

            Access Request Information:
                Accesses:    %%1537

                Access Mask:    0x10000

我只需要索引、TimeGenerated、Message->accountname、Message->object->objectname 和 Message->object 类型。如何过滤掉它,使它看起来像下面的东西,或者在 CSV 中足够干净以便在 Excel 中查看?

Index         : 244336
TimeGenerated : 4/9/2013 6:06:33 PM
Account name  : joeblow
Object type   : File
Object Name   : c:\files\Important_doc.xls
4

1 回答 1

2

我现在没有实验室来测试该条目,但试试这个:

Get-EventLog "Security" -before 4/10/2013 -InstanceId 4663 | % {
    New-Object psobject -Property @{
        Index = $_.Index
        TimeGenerated = $_.TimeGenerated
        "Account Name" = $_.ReplacementStrings[1]
        "Object Type" = $_.ReplacementStrings[5]
        "Object Name" = $_.ReplacementStrings[6]
    }
} | export-csv c:\export.csv -NoTypeInformation

EventLogEntry-object 中,有一个属性ReplacementStrings通常包含消息中使用的所有变量,按照它们在文本中的显示顺序。该消息中的第一个变量是“安全 ID”,因此很可能存储在其中,$_.ReplacementStrings[0]因为数组从零开始。所以只要数数你的方式。

于 2013-04-10T18:04:43.653 回答