🚀 PowerShell: Ускоряем чтение логов в 100 раз (XPath)
Задача: Найти в Event Log событие блокировки пользователя (ID 4740) за последний час. Обычный админ пишет так:
Проблема: PowerShell сначала выкачивает ВСЕ миллион событий из журнала к себе в память, и только потом отсеивает нужные. Это вешает сервер.
Сеньор использует Server-side filtering (XPath):
Результат: Вместо 2 минут команда отрабатывает за 0.3 секунды. Фильтруйте данные на источнике, а не в пайплайне.
#powershell #windows #performance #scripting #optimization #xml
Задача: Найти в Event Log событие блокировки пользователя (ID 4740) за последний час. Обычный админ пишет так:
# 🐢 Медленно (Client-side filtering)
Get-WinEvent -LogName Security |
Where-Object { $_.Id -eq 4740 -and $_.TimeCreated -gt (Get-Date).AddHours(-1) }
Проблема: PowerShell сначала выкачивает ВСЕ миллион событий из журнала к себе в память, и только потом отсеивает нужные. Это вешает сервер.
Сеньор использует Server-side filtering (XPath):
# 🐇 Быстро (Фильтрация на уровне движка Windows)
$XML = "*[System[(EventID=4740) and TimeCreated[timediff(@SystemTime) <= 3600000]]]"
Get-WinEvent -LogName Security -FilterXPath $XML
Результат: Вместо 2 минут команда отрабатывает за 0.3 секунды. Фильтруйте данные на источнике, а не в пайплайне.
#powershell #windows #performance #scripting #optimization #xml