Экспортировать фильтр сортировать пользователей AD - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я ищу решение для создания сценария powershell, который позволил бы мне получить Get-Aduser, но на уровне создания, например: я создал 50 пользователей с прошлого месяца. Мой коллега создал 20. Я хотел бы экспортировать и показывать только тех пользователей, которых я создал, хотя это точно такой же период. это будет возможно? В настоящее время я понятия не имею, с чего начать или как с этим бороться. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 23 апреля 2020

возможно ли это?

Конечно, если вы храните журналы событий безопасности контроллера домена в течение такого длительного времени.

Создатель объекта не записывается в сам каталог, но информация заносится в журнал, предполагая правильно настроенную политику аудита на контроллерах домена.

Очевидно, что об этом легче сообщать, если у вас есть SIEM или хотя бы какое-то центральное хранилище журналов , Но если нет, вы можете запросить контроллеры домена непосредственно для этих журналов:

# Event id 5137 == a directory object was created
$EventId = 5137
# We only want events instigated by ourselves
$Subject = $env:USERNAME
# ... over the last month
$Since = (Get-Date).AddMonths(-1)

# Prepare XPath filter
$timestamp = Get-Date $Since -Format s
$XPathFilter = "*[System[TimeCreated[@SystemTime>'$timestamp']][EventID=$EventId]][EventData[Data[@Name = 'SubjectUserName'] = '$Subject']]"

# Search all the domain controllers
$ObjectCreationEvents = Get-ADDomainController -Filter * |ForEach-Object {
  Get-WinEvent -FilterXPath $XPathFilter -LogName Security -ComputerName $_.HostName
}

Полученные события будут иметь уникальное значение objectGuid каждого объекта, что позволяет нам легко найти их снова:

$ObjectCreationEvents |ForEach-Object {
  # Extract object ID
  $guid = $_.ToXml().SelectSingleNode('//*[local-name() = "Data" and @Name = 
"ObjectGUID"]').InnerText

  # Query the actual object
  Get-ADObject -Identity $guid
}
...