#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 для применения фильтра на основе уровней событий