Difference between two powershell scripts

I received a script that is supposed to scan the event logs of 4 DCs, searching the event ID 4740 (user lockout). This is script number 1. Now I thought to myself, "Why scan all the DCs when I can scan the log of the DC that runs the role PDC Emulator?" So I found another script that does about the same job only faster... Now I have 4 questions:

  1. Does the PDCe have its own log or is it the "general" DC log?
  2. Do both scripts refer the same source?
  3. Why does the first one take about an hour and the second takes about 15 seconds?
  4. Why does the second script give output for only 8 hours back?

First script:

$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 

Second script:

$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}} 
0
задан 17 December 2015 в 02:34
1 ответ

Обе скрипты ссылаются на один и тот же источник?

Да, обе скрипты ссылаются на журнал безопасности. Но ваш get-eventlog извлекается только из одного DC.

  • get-eventlog -logname security -computername dc1, dc2, dc3, dc4
  • Get-WinEvent -ComputerName $PDC -Logname Security

Почему второй скрипт выдает вывод только на 8 часов назад?

Не уверен, я бы угадал часовые пояса. С помощью -после вы фильтруете вещи после даты, которую вы сохранили в $DD, которая, как мне кажется, округляется до ближайшего целого дня. Данные журнала событий, которые я считаю, хранятся с датой+время в UTC. В любом случае. Вам понадобится использовать правильную переменную даты, которая на самом деле указывает время, включая часовой пояс.

$DD = get-date -format d $L = get-eventlog... -после $DD

Почему первый занимает около часа, а второй - около 15 секунд?

Ну отчасти потому, что вы опрашиваете не один, а полдюжины компьютеров. Но другая часть заключается в том, что Get-WinEvent значительно быстрее, потому что он может обрабатывать большое количество фильтров на удаленном компьютере и посылать по сети только те биты, которые вам действительно нужны... Журнал get-eventlog, по сути, передает все записи в журнале событий на ваш компьютер, который затем выполняет фильтрацию.

Вот несколько статей, в которых мы рассмотрим подробнее.

У PDCe есть свой собственный журнал или это "общий" DC-журнал?

Не уверен, о чем вы здесь спрашиваете, и/или я не знаю.

.
1
ответ дан 4 December 2019 в 16:44

Теги

Похожие вопросы