2013-07-04 107 views
1

我一直在試圖找出一個解決以下問題:日誌分析器VBScripting問題

  • 我一直在建立一個VBScript來把使用 窗戶LogParser 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 

回答

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"
+0

非常感謝你的幫助! –

+0

請避免張貼「謝謝」意見。在SO上表達感謝的正確方式是upvote和/或[接受](http://meta.stackexchange.com/a/5235)答案。 –