Как мне найти новые учетные записи Active Directory, созданные за последние 90 дней?
кто-нибудь знает, кому это делать? Я не могу этого понять.
Заранее спасибо.
Для потомков dsquery предназначен для такого поиска. В AD есть поле whenCreated, которое упрощает поиск с помощью выбранного инструмента.
dsquery * -filter "(whenCreated>=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 Tools для 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 имеет атрибут WhenCreated и WhenChanged. Вы можете записать эти атрибуты в плоский файл с помощью утилиты LDIFDE или вы можете сбросить их в файл с разделителями-запятыми с помощью CSVDE (обе утилиты поставляются с Windows 2000).
Вот синтаксис для вывода двух атрибутов для пользовательских объектов в OU под названием Phoenix в домене Company.com на консоль для просмотра (вся запись должна быть напечатана как одна строка):
ldifde -d ou = phoenix, dc = company, dc = com -l при создании, при изменении -p onelevel -r "(ObjectCategory = пользователь)" -f con
Если вы хотите сохранить дамп в файл, измените параметр -f с con на имя файла.
Метка времени последнего входа в систему использует следующий формат: ГГГГММДДЧЧММСС, где час отображается в формате универсального координированного времени. Отметка времени 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