次の問題の解決策を見つけようとしています。
LogParser
Windows 2.2 ツールを使用して、一連のセキュリティ監査イベントをプルする VBScript を作成しています。evt(x)
スクリプトの目的は、毎週の監査フォルダー構造内で既に収集され「保存された」ファイルから監査ログを解析すること です。検討のためにこれらのログを毎週収集する WMI サービスが既に実行されている Windows システムのネットワーク全体を扱っていると想像してみてください。そのため、フォルダ構造は毎週一貫しています (例:/../audits/date/windows/XXX.evt
)。これらの週単位の監査ファイルの要約ファイルはテキスト ベースであり、週単位で数百台のマシンを監査するのには適していません。
イベントをプルして、問題があればhtmlに出力できるように、基本的な構文を理解しました。私の苦労には、必要な追加機能が追加されています。
スクリプトには次の機能が必要です。
起動時に、ユーザーに監査データの解析元のファイル パスを入力するよう求める必要があります (例:
../2013-07-03/windows/*
) 。次に、ユーザーの応答を値にバインドし、スクリプト全体で指定した変数を置き換えるために使用する必要があります。望ましい結果は、スクリプトが、ユーザーが識別した場所でスクリプト内のクエリ イベントを開始することです。
正規表現オブジェクトで入力ボックスを使用しようとしましたが、
filePathReplace
指定した場所でスクリプトがクエリ イベントを実行するように、スクリプトを実行して変数 ( ) を置き換えることができません。
入力ボックスが使用されているかどうかは気にしません。何よりも、スクリプトにファイル パスをフィードし、それをスクリプト全体に適用して、logparser がその特定のフォルダーで指示を開始できるようにする方法が必要です。
私が持っているものの抜粋を以下に示します。どんな助けでも大歓迎です。ありがとうございました。
コードの抜粋 (これはスクリプトのコア コンポーネントであり、監査イベントの 1 つです)
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