Відповіді:
Для нащадків dsquery призначений для такого виду пошуку. AD зберігає поле "WhenCreate", що полегшує пошук за допомогою обраного інструменту.
dsquery * -filter "(колиCreate> = 20101022083730.0Z)"
Як приклад. Ви можете програмно створювати часовий рядок на основі зараз - 90днів.
Спробуйте виконати наступне, щоб залучити користувачів, створених за останні 30 днів.
Get-ADUser -Filter * -Properties whenCreated | Where-Object {$_.whenCreated -ge ((Get-Date).AddDays(-30)).Date}
Альтернатива наведеній вище версії Powershell, яка є набагато ефективнішою, оскільки вона не завантажує всіх користувачів у пам'ять перед їх фільтруванням (слід робити фільтр на командлеті Get-ADUser безпосередньо та не використовувати Where-Object):
$now = ((Get-Date).AddDays(-90)).Date
Get-ADUser -Filter {whenCreated -ge $now}
Використовуючи PowerShell та інструменти Quest ActiveRoles для AD (знайдено тут - http://www.quest.com/powershell/activeroles-server.aspx ),
Get-QADUser -CreatedAfter (Get-Date).AddDays(-90)
дасть вам вихід на консоль або куди б ви не переспрямовували всіх користувачів, створених за останні 90 днів.
Ось приклад з іншого сайту, коли хтось отримує всі облікові записи AD, відсортовані за датою створення:
http://www.experts-exchange.com/Security/Operating_Systems_Security/Windows/Q_21117191.html
Ви можете отримати дату створення для кожного облікового запису з Active Directory. Кожен об’єкт AD має атрибут WhenCreate та WhenChanged. Ви можете скинути ці атрибути в плоский файл за допомогою утиліти LDIFDE, або можете скинути їх у файл, розділений комами, за допомогою CSVDE (обидві утиліти поставляються з Windows 2000).
Ось синтаксис для скидання двох атрибутів для об’єктів користувача в ОУ під назвою Phoenix у домені під назвою Company.com до консолі для перегляду (весь запис повинен бути введений як один рядок):
ldifde -d ou = phoenix, dc = компанія, dc = com -l при створенні, при зміні -p onevevel -r "(ObjectCategory = користувач)" -f con
Якщо ви хочете зберегти дамп у файл, змініть перемикач -f з con на ім'я файлу.
Для останньої часової позначки входу використовується такий формат: YYYYMMDDHHMMSS, з годиною, що відображається в Універсальному координованому часі. Марка часу 20040115182937.0Z відповідає 15 січня 2004 18:29:37 UCT.
USRSTAT повільний, і отриманий звіт повинен бути об'єднаний з дамп LDIFDE. Отже, я складаю сценарій, який шукає об’єкти користувача на кожному контролері домену, потім перераховує місцевий час входу та час створення. Позначення часу входу користувача потребує перетворення з великого цілого числа. Я запозичив код перетворення походить від Річарда Л. Мюллера (www.rlmueller.net/Programs). Повний сценарій Річарда також бере місцевий часовий пояс з Реєстру та перетворює час з UCT на місцевий час. Ніфт
Насправді всі ці відповіді не спрацюють для величезних виробничих середовищ AD.
Відповідь потрібно використовувати DirSync: https://support.microsoft.com/en-us/help/891995/how-to-poll-for-object-attribute-changes-in-active-directory-on-window
Ось реалізація цього Java: https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html
В основному ви постійно запитуєте AD про зміни на основі додаткового маркера.
З цим можна зробити досить легко dsquery
"(&(objectClass=user)(whenCreated>=20101022083730.0Z))"для фільтрації комп'ютерів та інших об'єктів.