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

Как найти учетные записи AD, созданные в определенное время?

При создании почтовых ящиков в Microsoft Exchange Server бывает так, что учетные записи и почтовые ящики создаются разными администраторами. Чтобы не обмениваться информацией о вновь созданных пользователях, можно написать скрипт, который будет определять местонахождение пользователя, выбирать наиболее подходящий почтовый сервер и базу сообщений, затем создавать в ней почтовый ящик и отправлять уведомление. Но об этом в другой статье, а ниже мы посмотрим, как получить список пользователей Active Directory созданных за определенный временной промежуток.

Например, администратор сети вчера создал учетные записи и вам необходимо создать для них почтовые ящики.
Запускаем скрипт.


Import-Module ActiveDirectory

$MDate = ((Get-Date).AddDays(-1)).Date

Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|sort name|
                   ft name,samaccountname,whencreated -AutoSize

На выходе получится вот такой список:

 

Список учетных записей, созданных сегодня

Мы видим имя учетной записи, SamAccounName и дату создания. Эти учетные записи создавались скриптом, поэтому время создания отличается на примерно 15 секунд.

Получив такой список, можно создавать почтовые ящики используя свойство AD  SamAccountName и командлет Enable-Mailbox.

Рассмотрим по порядку каждую строку.

Import-Module ActiveDirectory

Для работы с коммандлетами Active Directory необходимо подгрузить модуль ActiveDirectory. В PowerShell 3.0 этого делать не нужно, т.к. модуль подгрузится автоматически.

$MDate = ((Get-Date).AddDays(-1)).Date

В переменной $MDate сохраняется дата на один день меньше от текущей и часы скидываются на начало дня. Конструкция (Get-Date).Date — покажет дату с 0:00 часов  текущего дня.

Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|
            sort name| ft Name,samaccountname,whencreated -AutoSize

Используя конструкцию Get-ADUser -Filter {whenCreated -ge $MDate} мы получаем список учетных записей, у которых время создания — свойство whenCreated больше, чем утро текущего дня.

Поскольку Get-AdUser возвращает только предопределенные свойства, то мы передаем параметр
-property whencreated, чтобы это свойство появилось в объекте. Дальше идет сортировка по имени пользователя и вывод данных в табличном виде с автоматическим форматированием.

В PowerShell 3.0 загружать модуль AD не обязательно, он загрузится автоматически.

 

Связанные записи:


  • http://my.mail.ru/mail/alimjan_ushurov/ Алим Ушуров

    Здравствуйте, подскажите пожалуйста а как выгрузить в CSV?
    Какую команду дописать?

    • http://facebook.com/profile.php?id=1386655156 Павел Нагаев

      Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|
      sort name| select Name,samaccountname,whencreated | Export-Csv -Path «c:windowstemptest.txt»

      • http://my.mail.ru/mail/alimjan_ushurov/ Алим Ушуров

        Павел, спасибо Вам большое. Есть еще один вопрос. у меня в АД учетные записи заведены в кириллице мне нужно дописывать -encoding unicode или как правильно будет?
        выгрузил данные в АД учеток заведенных в 2015 году при помощи Вашей команды в текстовой документ. ФИО русские он не видит.

        • http://my.mail.ru/mail/alimjan_ushurov/ Алим Ушуров

          точнее при выгрузке имен написанных в кириллице. показывает как вопросительный знак.

          • http://my.mail.ru/mail/alimjan_ushurov/ Алим Ушуров

            Павел разобрался
            $MDate = ((Get-Date).AddDays(-300)).Date
            Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|sort name|ft name,samaccountname,whencreated –AutoSize |out-file “C:Tempusers.txt”

          • http://facebook.com/profile.php?id=1386655156 Павел Нагаев

            отлично