Я получил сценарий, который должен сканировать журналы событий 4 контроллеров домена в поисках идентификатора события 4740 (блокировка пользователя). Это сценарий номер 1. Я подумал про себя: «Зачем сканировать все контроллеры домена, если я могу сканировать журнал контроллера домена, на котором работает эмулятор PDC?» Итак, я нашел другой сценарий, который выполняет ту же работу, только быстрее ... Теперь у меня 4 вопроса:
Первый сценарий:
$DD = get-date -format d
$DD
$L = get-eventlog -logname security -computername dc1, dc2, dc3, dc4 -after $DD | where {$_.eventid -eq 4740 } | ft -autosize timegenerated.replacementstrings
$L
$L >> locked.accounts.txt
Второй сценарий:
$PDC = Get-ADDomainController -Discover -Service PrimaryDC
Get-WinEvent -ComputerName $PDC -Logname Security -FilterXPath "*[System[EventID=4740 and TimeCreated[timediff(@SystemTime) <= 604800000]] and
EventData]" |
Select-Object TimeCreated,@{Name='User Name';Expression={$_.Properties[0].Value}},@{Name='Source Host';Expression={$_.Properties[1].Value}}
Оба сценария ссылаются на один и тот же источник?
Да, оба имеют в виду журнал безопасности. Но твой get-eventlog
тянет только с одного DC.
Почему второй скрипт выдает результат только за 8 часов?
Не уверен, я бы предположил, часовые пояса. С -after
вы фильтруете данные после даты, которую вы сохранили в $DD
, который, я думаю, округлится до ближайшего целого дня. Я считаю, что данные журнала событий хранятся с указанием даты и времени в формате UTC. Тем не мение. Вам нужно будет использовать правильную переменную даты, которая фактически определяет желаемое время, включая часовой пояс.
$ DD = get-date -format d $ L = get-eventlog ... -after $ DD
Почему первый занимает около часа, а второй - около 15 секунд?
Отчасти это потому, что вы запрашиваете полдюжины компьютеров вместо одного. Но другая часть в том, что Get-WinEvent
значительно быстрее, потому что он может обрабатывать большую часть фильтрации на удаленном компьютере и отправлять по сети только те биты, которые вам действительно нужны. get-eventlog
в основном передает все записи журнала событий на ваш компьютер, который затем выполняет фильтрацию.
Вот несколько статей, в которых рассказывается подробнее.
Есть ли у PDCe собственный журнал или это «общий» журнал DC?
Не уверен, что вы здесь спрашиваете, и / или я не знаю.