Log Parser VBScripting Issue

时间:2013-07-04 03:32:51

标签: windows vbscript logparser

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

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

  • 该脚本的目标是解析已收集的审核日志并“保存关闭” 每周审计文件夹结构中的evt(x)个文件。想象一下 您正在处理具有WMI服务的整个Windows系统网络 已经运行,每周收集这些日志进行审核。就这样,文件夹 结构从一周到一周保持一致(例如/../audits/date/windows/XXX.evt)。

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

  • 我已经找到了基本语法,以便我可以拉出事件并将它们输出到html 任何问题。我的奋斗伴随着我需要的额外功能。

  • 该脚本需要以下功能:

    1. 启动时,需要提示用户输入所需的文件路径 从(例如../2013-07-03/windows/*

    2. 解析审计数据
    3. 然后用户的响应需要绑定一个值,并用于替换一个  变量我在整个脚本中指定。期望的结果是  脚本在用户标识的位置开始脚本中的查询事件。

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

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

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

CODE EXCERPT (这是脚本的核心组件和其中一个审核事件)

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

1 个答案:

答案 0 :(得分: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"