1

次の問題の解決策を見つけようとしています。

  • LogParserWindows 2.2 ツールを使用して、一連のセキュリティ監査イベントをプルする VBScript を作成しています。

  • evt(x)スクリプトの目的は、毎週の監査フォルダー構造内で既に収集され「保存された」ファイルから監査ログを解析すること です。検討のためにこれらのログを毎週収集する WMI サービスが既に実行されている Windows システムのネットワーク全体を扱っていると想像してみてください。そのため、フォルダ構造は毎週一貫しています (例: /../audits/date/windows/XXX.evt)。

  • これらの週単位の監査ファイルの要約ファイルはテキスト ベースであり、週単位で数百台のマシンを監査するのには適していません。

  • イベントをプルして、問題があればhtmlに出力できるように、基本的な構文を理解しました。私の苦労には、必要な追加機能が追加されています。

  • スクリプトには次の機能が必要です。

    1. 起動時に、ユーザーに監査データの解析元のファイル パスを入力するよう求める必要があります (例: ../2013-07-03/windows/*) 。

    2. 次に、ユーザーの応答を値にバインドし、スクリプト全体で指定した変数を置き換えるために使用する必要があります。望ましい結果は、スクリプトが、ユーザーが識別した場所でスクリプト内のクエリ イベントを開始することです。

  • 正規表現オブジェクトで入力ボックスを使用しようとしましたが、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
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 に答える