Назад | Перейти на главную страницу

Как отфильтровать журнал безопасности с помощью XML для следующих данных

Менеджер попросил меня регистрировать время и дату запуска и остановки, когда пользователь запускает определенную программу (Starcraft II). Я включил ведение журнала на машине пользователя, чтобы он сообщал обо всех созданных и завершенных процессах. (Журналы Windows -> Безопасность)

Я не могу фильтровать журналы, чтобы показать "только" создание и завершение процесса указанных программ.

Информация о создании процесса выглядит следующим образом.

NewProcessId 0xc10 
  NewProcessName C:\Program Files (x86)\StarCraft II\StarCraft II.exe 
  TokenElevationType %%1936 
  ProcessId 0xa70 

NewProcessId 0xf18 
  NewProcessName C:\Program Files (x86)\StarCraft II\Support\SC2Switcher.exe 
  TokenElevationType %%1936 
  ProcessId 0xc10 

NewProcessId 0x1a0c 
  NewProcessName C:\Program Files (x86)\StarCraft II\Versions\Base16605\SC2.exe 
  TokenElevationType %%1936 
  ProcessId 0xf18 

Завершение процесса использует ту же информацию ProcessId.

Какой XML-запрос даст "только" рассматриваемые журналы?

Все это в среде Windows 7.

Выражения Microsoft xpath, похоже, не поддерживают фильтрацию значений с атрибутами. В глубине XML контейнеризация выглядит так:

[EventID]
   [Data Name="NewProcessName"]"C:\Program Files (x86)\StarCraft II\StarCraft II.exe"[/Data]
[/EventID]

Проблема в том, что выражения Microsoft XPath не могут указывать равенство для значения этого поля. Он может проверить, существует ли равенство, за его пределами.

Может, я еще не откопал. В любом случае это может помочь:

<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[EventData[Data[@Name="NewProcessName"]] and System[(EventID=4688)]]</Select>
</Query>
</QueryList>

Если вы не прочь немного поработать с PowerShell, попробуйте. Он сбросит CSV-файл, с которым вы можете играть в Excel, в текущем каталоге.

Get-EventLog Security -ComputerName RemotePC | ?{$_.Message -ilike '*StarCraft*'} | Export-Csv SecurityLog.csv

Вы также можете добавить такие дополнительные условия:

Get-EventLog Security -ComputerName RemotePC | ?{$_.Message -ilike '*StarCraft*' -or $_.Message -ilike '*Something Else*'} | Export-Csv SecurityLog.csv