1

我一直在试图找出解决以下问题的方法:

  • LogParser我一直在构建一个 VBScript 来使用 windows 2.2 工具提取一系列安全审计事件。

  • 该脚本的目标是从 evt(x)每周审核文件夹结构中已收集和“保存”的文件中解析审核日志。想象一下,您正在处理整个 Windows 系统网络,这些系统已经运行了 WMI 服务,每周收集这些日志以供审查。因此,文件夹结构每周都保持一致(例如/../audits/date/windows/XXX.evt)。

  • 这些每周审计文件的摘要文件是基于文本的,不利于每周审计数百台机器。

  • 我已经确定了基本语法,以便我可以拉事件并将它们输出到 html 有任何问题。我的挣扎伴随着我需要它具有的附加功能。

  • 该脚本需要以下功能:

    1. 在启动时,它需要提示用户输入他们要从中解析审计数据的文件路径(例如../2013-07-03/windows/*

    2. 然后用户的响应需要绑定到一个值,并用于替换我在整个脚本中指定的变量。期望的结果是脚本在用户标识的位置启动脚本中的查询事件。

  • 我尝试使用带有正则表达式对象的输入框,但我无法让脚本通过并替换变量 ( filePathReplace),以便脚本将在我指定的位置运行查询事件。

我不在乎是否使用输入框。最重要的是,我只需要一种方法来为脚本提供文件路径,并将其应用于整个脚本,以便 logparser 在该特定文件夹中启动我的指令。

下面是我所拥有的摘录。非常感谢任何和所有帮助。谢谢大家的时间。

代码摘录 (这是脚本的核心组件和审计事件之一)

Dim oLogQuery
Dim oEVTInputFormat
Dim oTPLOutputFormat 
Dim strQuery

Set oLogQuery = CreateObject("MSUtil.LogQuery")

' Create Input Format object
Set oEVTInputFormat = CreateObject("MSUtil.LogQuery.EventLogInputFormat")
oEVTInputFormat.direction = "BW"

' Create Output Format object
Set oTPLOutputFormat = CreateObject("MSUtil.LogQuery.TemplateOutputFormat")

' Create query text  (the variable substitution should occur where I state
' filePathReplace. To make the script run without this function, subsitiute
' that variable for 'Security'

' Audit log clearing - 517

oTPLOutputFormat.tpl = "C:\Program Files\Log Parser 2.2\EventFilters\EventLogs-TPL-517.tpl"

strQuery = "SELECT TimeGenerated, EventID, " & _
  "EXTRACT_TOKEN (Strings,3,'|') AS clientUserName, " & _
  "EXTRACT_TOKEN (Strings,4,'|') AS hostName, " & _
  "EXTRACT_TOKEN (Message,0,'Primary User Name') AS Message " & _ 
  "INTO 'C:\Program Files\Log Parser 2.2\EventFilters\AuditLogCleared-517.htm' " & _
  "FROM 'filePathReplace' " & _
  "WHERE EventID = 517"

oLogQuery.ExecuteBatch strQuery, oEVTInputFormat, oTPLOutputFormat
4

1 回答 1

0

Shell.BrowseForFolder方法可以说是您问题的最佳解决方案。例子:

Set os = CreateObject("shell.application")
basedir = os.Namespace("C:\some\folder").Self.Path
Set fldr = os.BrowseForFolder(0, "Select Folder:", &h10&, basedir)
If Not fldr Is Nothing Then
  'do stuff
End If

像这样使用返回的对象:

strQuery = "SELECT ..." & _
  ...
  "FROM '" & fldr.Self.Path & "' " & _
  "WHERE EventID = 517"
于 2013-07-04T07:59:41.367 回答