Экспорт критических событий, предупреждений и ошибок из журналов Windows

#powershell #logging #event-viewer

Вопрос:

Я использую большую часть сценария отсюда.https://kb.webspy.com/s/статья/windows-журналы событий-и-powershell

Однако мне было интересно, есть ли способ экспортировать только критические события, предупреждения и ошибки. Я знаю, что эти уровни событий 1-3

 Get-WinEvent -FilterHashTable @{LogName = "System"; Level=1,2,3; StartTime=((Get-Date).AddDays(-7))} -ComputerName "server1" #| Out-GridView
 

Мне просто было интересно, где добавить уровень в этот сценарий.

 # Logs to extract from server
$logArray = @("System","Security","Application")

# Grabs the server name to append to the log file extraction
$servername = $env:computername

# Provide the path with ending "" to store the log file extraction.
$destinationpath = "C:WindowsEventLogs"

# Checks the last character of the destination path.  If it does not end in '' it adds one.
# '. ?\


Ответ №1:

Похоже, что код используется wevtutil для получения информации о журналах событий.

wevtutil epl $log $пункт назначения

Из документации wevtutil также принимаются различные варианты, и один из них таков /q:<Query> .

Определяет запрос XPath для фильтрации событий, которые считываются или экспортируются. Если этот параметр не указан, все события будут возвращены или экспортированы. Этот параметр недоступен, если значение /sq равно true.

Таким образом, вы можете создать запрос Xpath для применения фильтра на основе уровней событий

wevtutil epl $log $назначение /вопрос:"*[Система[(Уровень=1 или Уровень=2 или Уровень=3)]]"

? means any character \ is looking for the backslash $ is the end of the line charater
if ($destinationpath -notmatch '. ?\

Ответ №1:

Похоже, что код используется wevtutil для получения информации о журналах событий.


Из документации wevtutil также принимаются различные варианты, и один из них таков /q:<Query> .

Определяет запрос XPath для фильтрации событий, которые считываются или экспортируются. Если этот параметр не указан, все события будут возвращены или экспортированы. Этот параметр недоступен, если значение /sq равно true.

Таким образом, вы можете создать запрос Xpath для применения фильтра на основе уровней событий


)
{
$destinationpath = ''
}

# If the destination path does not exist it will create it
if (!(Test-Path -Path $destinationpath))
{
New-Item -ItemType directory -Path $destinationpath
}

# Get the current date in YearMonthDay format
$logdate = Get-Date -format yyyyMMddHHmm

# Start Process Timer
$StopWatch = [system.diagnostics.stopwatch]::startNew()

# Start Code
Clear-Host

Foreach($log in $logArray)
{
# If using Clear and backup
$destination = $destinationpath $servername "-" $log "-" $logdate ".evtx"

Write-Host "Extracting the $log file now."

# Extract each log file listed in $logArray from the local server.
wevtutil epl $log $destination

}

# End Code

# Stop Timer
$StopWatch.Stop()
$TotalTime = $StopWatch.Elapsed.TotalSeconds
$TotalTime = [math]::Round($totalTime, 2)
write-host "The Script took $TotalTime seconds to execute."

Ответ №1:

Похоже, что код используется wevtutil для получения информации о журналах событий.


Из документации wevtutil также принимаются различные варианты, и один из них таков /q:<Query> .

Определяет запрос XPath для фильтрации событий, которые считываются или экспортируются. Если этот параметр не указан, все события будут возвращены или экспортированы. Этот параметр недоступен, если значение /sq равно true.

Таким образом, вы можете создать запрос Xpath для применения фильтра на основе уровней событий