【发布时间】:2015-09-23 02:37:08
【问题描述】:
我正在蚕食here 提供的脚本,以尝试解析某些文件审核事件的安全事件日志。我要做的是将输出限制为与特定文件名和访问掩码匹配的事件。
事件解析器使用System.Text.StringBuilder 构造结果对象($evt),我想对其进行过滤以获得我真正想要的事件。
这是一些原始输出:
23/09/2015 10:50:23 AM userid F:\dir1 0x1
23/09/2015 10:50:23 AM userid F:\dir1\dir2 0x1
23/09/2015 10:50:23 AM userid F:\dir1\dir2\doc.docx 0x20000
示例中的最后一行是我要捕获的那种。
我按照以下内容将每一行创建为键/数据对
$out.AppendLine("TimeCreated = $($evt.TimeCreated),Username = $SubjectUserName,File = $ObjectName,AccessMask = $AccessMask")
然后我发现ConvertFrom-StringData 对文件路径中的反斜杠不满意,所以修复它以创建哈希表:
$output = $out.ToString() -replace '\\', '\\'
$hash = convertfrom-stringdata -stringdata $output
但现在我收到以下错误:
convertfrom-stringdata : Data item 'TimeCreated' in line 'TimeCreated =
09/23/2015 10:50:23,Username = userid,File = F:\\dir1,AccessMask = 0x1'
is already defined.
我怀疑我需要回到首要原则来过滤具有已知 eventID 和特定内容的事件数据,而不是使用字符串和哈希表(可能是自定义 PSObject?),但谁能说明这个错误是关于什么的?还是更好的方法?
【问题讨论】: