Примеры работы с группами MS Active Directory (AD DS) из командной строки Powershell

Класс по работе с Active Directory на C#

Решил выложить свой класс по работе с Active Directory написанный на C# который писался/переписывался на протяжении долгого времени и который активно используется в работе.

Описания функций может не соответствовать действительности, многие функции могут уже не использоваться и быть заменены другими по тем или иным причинам, но оставлены в коде. Говоря просто – эта солянка писанная/переписанная в разные моменты времени с разной степени лени под те или иные задачи.

В работе лучше использовать функции с префиксом LDAP т.к. они работают более быстро.

Действия с группами AD

1. Добавить пользователя в группу

Add-ADGroupMember «Domain Admins» dmosk

* в данном примере пользователь dmosk будет добавлен в группу Domain Admins.

2. Создать новую группу

New-ADGroup -GroupScope DomainLocal -Path «OU=Группы,DC=dmosk,DC=local» -Name «Отдел строительства космических кораблей»

* где GroupScope DomainLocal задает локальную область действия; Path определяет размещение группы в дереве Active Directory.

3. Удалить пользователя из группы

Remove-ADGroupMember -Confirm:$false -Identity «Domain Users» -Members dmosk

* удаляем пользователя dmosk из группы Domain Users. Ключ -Confirm:$false используется для автоматического подтверждения действия (система не станет запрашивать, точно ли Вы хотите удалить пользователя из группы).

Windows: Вывести список авторизаций конкретного пользователя в Active Directory.

Довольно часто возникает необходимость узнать имя или ip-адрес ПК, за которым работал пользователь. Если компьютер подключен к домену, сделать это проще всего проанализировав журналы событий контроллеров домена. Нужно искать события с кодом 4624 в журналах «Безопасность». Сей процесс можно оптимизировать powershell-скриптом, текст скрипта и описание ниже.

Скрипт запрашивает имя пользователя и ищет по журналам контроллеров домена события успешной авторизации.

# Пишем приветствие.
write-host «Введите имя юзера:»
# Сохраняем имя пользователя в переменную $chekuser
$checkuser = read-host
# Устанавливаем начальную дату поиска в переменную $startDate. -2 означает за два дня до текущей даты, можно изменить по желанию.
$startDate = (get-date).AddDays(-2)
# Получаем контроллеры домена, на которых будем искать события авторизации
$DCs = Get-ADDomainController -Filter *
# Цикл всем контроллерам домена. Сохраняем события с кодом 4624 журнала Security начиная с даты в переменной $startDate
foreach ($DC in $DCs)$logonevents = Get-Eventlog -LogName Security -InstanceID 4624 -after $startDate -ComputerName $dc.HostName
# Цикл по всем сохраненным событиям. Сохраняем события принадлежащие пользователю из переменной $checkuser
foreach ($event in $logonevents)if (($event.ReplacementStrings[5] -notlike ‘*

) -and ($event.ReplacementStrings[5] -like $checkuser)) # Выводим события с типом входа 10 (Вход на сервер по RDP Remote(Logon Type 10))
if ($event.ReplacementStrings[8] -eq 10)write-host «Type 10: Remote Logon`tDate: «$event.TimeGenerated «`tStatus: Success`tUser: «$event.ReplacementStrings[5] «`tWorkstation: «$event.ReplacementStrings[11] «`tIP Address: «$event.ReplacementStrings[18] «`tDC Name: » $dc.Name
>
# Выводим события с типом входа 3 (Авторизация по сети Network(Logon Type 3))
if ($event.ReplacementStrings[8] -eq 3)write-host «Type 3: Network Logon`tDate: «$event.TimeGenerated «`tStatus: Success`tUser: «$event.ReplacementStrings[5] «`tWorkstation: «$event.ReplacementStrings[11] «`tIP Address: «$event.ReplacementStrings[18] «`tDC Name: » $dc.Name
>
>
>
>

Скачать скрипт можно отсюда.

Как не трудно догадаться, размер журнала событий ограничен. Так что если вам нужно найти ПК пользователя, который давно уволился и никто не помнит за каким компом он сидел, то данный скрипт вам скорее всего не поможет. Под эту задачу ваш покорный слуга не придумал ничего лучше, как искать папку с профилем используя админский сетевой доступ. Подробнее тут: Windows: Powershell-скрипт для поиска папки с профилем пользователя по всем компам в домене.

[/H1toH2]

3. Настройка атрибутов учетных записей пользователей

После создания учетной записи пользователя, еще нужно сконфигурировать атрибуты объекта пользователя в зависимости от требований организации, а также, возможно, настроить определенные свойства учетной записи.

Из всех атрибутов объектов учетных записей пользователей, существуют шесть обязательных атрибутов:

cn. Атрибут, который используется для отображения свойств имени. Это поле должно быть уникальным во всем домене, и заполняется автоматически;

instanceType. Текущий атрибут указывает экземпляр объекта пользователя, который будет использоваться в качестве шаблона для нового объекта пользователя;

objectCategory. Данный атрибут определяет категорию схемы Active Directory. Например, CN=Person, CN=Schema, CN=Configuration, DC=BIOPHARMACEUTIQUE, DC=COM;

objectClass. Этот атрибут определяет класс объекта;

objectSid. Определяет идентификатор безопасности объекта, который назначается автоматически;

sAMAccoountName. Задает имя учетной записи SAM пользователя. Максимальная длина описания – 256 знаков. Конфигурируется данный атрибут непосредственно на основе данных, обеспечиваемых при создании учетной записи пользователя.

Использование Get-ADUser для получения разной информации о пользователях домена AD

Не секрет, что начиная с первой версии PowerShell, Microsoft пытается сделать из него основной инструмент администрирования Windows. И во многом это получается! Сегодня на простых примерах, мы покажем возможности PowerShell, которые можно использовать для получения различной информации о пользователях Active Directory и их атрибутах.

Примечание. Ранее для получения информации об атрибутах учетных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (в том числе сохраненные запросы AD), vbs скрипты, утилиту dsquery и т.п. Выбор инструмента обычно основывался на поставленной задачи и способностях администратора в программировании.

В PowerShell 2.0 появился специальный модуль для работы с Active Directory — Active Directory Module for Windows PowerShell (представлен в Windows Server 2008 R2), командлеты которого позволяют выполнять различные манипуляции с объектами каталога AD. Для получения информации о пользователях домена Active Directory и их свойствах предназначен командлет Get-ADUser. С помощью командлета Get-ADUser можно получить значение любого атрибута существующей учетной записи пользователя в AD. Кроме того, можно указывать различные критерии выборки и формировать списки пользователей домена и их атрибутов.

В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию, о том, когда последний раз менялся пароля пользователя и когда истекает срок его действия.

Запускаем окно Powershll с правами администратора и импортируем модуль Active Directory командой:

Совет. В Windows Server 2012 и выше этот пункт можно пропустить, так как модуль PowerShell Active Directory подключен по-умолчанию.

В клиентских ОС (в той же Windows 10) для работы коммандера Get-AdUser нужно установить соответствующую версию RSAT и включить в панели управления компонент Active Directory Module for Windows PowerShell (Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> AD DS Tools).

RSAT включить модуль Active Directory Module for Windows PowerShell

Полный список всех аргументов командлета Get-ADUser можно получить так:

Чтобы вывести список всех учетных записей домена, выполним команду:

Важно. Не рекомендуется выполнять эту команду в доменах с большим количеством аккаунтов, т.к. возможно перегрузка контроллера домена, предоставляющего данные.

Get-ADUser -filter * - вывести список всех пользователей в AD

Формат возвращаемого списка не очень удобен для использования, выводится только некоторые основные 10 из более 120 атрибутов и свойств учетных записей пользователей (DN, SamAccountName, Name, SID, UPN и т.д) кроме того, мы видим, что информация о времени последней смены пароля отсутствует.

Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполним команду:

Get-ADUser - все свойства пользователя в Active Directory

Итак, мы видим полный список атрибутов пользователя AD и их значений, ассоциированных с учетной записью пользователя. Далее мы перейдем к форматированию вывода командлета Get-ADUser, так, чтобы отображались нужные нам поля. Нас интересуют атрибуты:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires

Get-ADUse - время смены и истечения срока действия пароля в AD

Теперь в данных пользователя есть информация о дате смены пароля и времени, когда срок пароля истечет. Представим информацию в более удобном табличном виде:

Get-ADUser - табличное преставление о свойствах пользователей

Чтобы вывести данные пользователей из определенной OU, воспользуемся параметром SearchBase:

Результат выполнения команды можно выгрузить в текстовый файл:

Или в CSV, который в дальнейшем будет удобно экспортировать в Excel (дополнительно с помощью sort-object отсортируем таблицу по столбцу PasswordLastSet , а также добавим условие where – имя пользователя должно содержать строку «Dmitry»):

Get-ADUser с условием where и сохранением в csv

Таким образом, можно построить таблицу с любыми необходимыми атрибутами пользователей Active Directory.

Для получения списка учетных записей пользователей AD по определенному признаку используется параметр –Filter. В качестве аргументов этого параметра можно указать значение определённых атрибутов пользователей Active Directory, в результате командлет Get-ADUser будет применятся для пользователей, которые попадают под критерии фильтра.

Далее приведем еще несколько полезных вариантов запросов о пользователях Active Directory с помощью различных фильтров. Вы можете их комбинировать для получения необходимого списка пользователей AD:

Вывод пользователей AD, имя которых начинается с Roman:

Чтобы подсчитать общее количество всех аккаунтов в Active Directory:

Список всех активных (не заблокированных) учетных записей в AD:

Список учетных записей с истекшим сроком действия пароля:

Список активных учеток с почтовыми адресами:

Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетке в строке) нужно получить телефон пользователя в AD и выгрузить информацию в текстовый csv файл (можно легко импортировать в Esxel).

Следующий пример позволяет выгрузить адресную книгу предприятия в виде csv файла, который в дальнейшем можно импортировать в Outlook или Mozilla Thunderbird:

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

Чтобы получить фотографию пользователя из Active Directory и сохранить ее в jpg файл:

Список групп, в которых состоит учетная запись пользователя

Профессиональная поддержка ПК, поддержка IT-системы в целом – это то, о чем нужно задуматься уже сегодня. Доверьте это специалистам. Успехов!

Месяц без оплаты. Подробнее!

Попробуйте наши услуги обслуживания и получите третий месяц обслуживания в подарок!

Иллюстрированный самоучитель по администрированию Windows 2000/2003

При помощи оснастки Active Directory – пользователи и компьютеры (Active Directory Users And Computers) можно обновлять и изменять данные доменных учетных записей пользователей и групп. Если Вам нужно внести изменения в учетные записи на локальном компьютере, задействуйте оснастку Локальные пользователи и группы (Local Users And Groups).

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

Выполните следующие действия, чтобы переименовать учетную запись:

  1. Откройте оснастку Active Directory – пользователи и компьютеры или Локальные пользователи и группы, в зависимости от того, какой тип учетной записи Вам нужно переименовать.
  2. Вызовите контекстное меню правым щелком мыши на имени учетной записи и выберите команду Переименовать (Rename). Затем введите новое имя учетной записи.

Идентификаторы безопасности (SIDs)

Переименовывая учетную запись, Вы всего лишь даете ей новое имя. Как рассказывалось в Главе 7, имена пользователей облегчают Вам управление учетными записями и работу с ними. Операционная система Windows 2000 использует в своей работе идентификаторы безопасности (SIDs) для распознавания, отслеживания и обработки учетных записей вне зависимости от их имен. Идентификаторы безопасности являются уникальными и генерируются одновременно с созданием учетной записи.

Поскольку существует внутренняя связь между именем учетной записи пользователя и ее идентификатором безопасности, Вам не нужно изменять привилегии и разрешения переименованной учетной записи. Windows 2000 просто сопоставляет идентификатор безопасности новому имени учетной записи, когда в этом возникает необходимость.
Распространенной причиной переименования учетных записей служит смена фамилии работника после свадьбы. Например, если Jane Williams (JANEW) вышла замуж и взяла фамилию супруга, она может захотеть сменить имя своей учетной записи соответственно новой фамилии – Jane Marshall (JANEM).Когда вы переименовываете учетную запись с JANEW на JANEM, смена имени отразится на всех связанных с ней привилегиях и разрешениях.Например, у JANEM будут все разрешения для файлов, которые ранее имелись у JANEW (причем JANEW уже не будет присутствовать в списках).

Изменение прочей информации

Когда Вы изменяете имя учетной записи с JANEW на JANEM, свойства пользователя и имена файлов, связанных с этой учетной записью, остаются прежними. Это означает, что Вам следует обновить данные учетной записи. Возможно, Вам понадобится обновить следующую информацию:

  • Выводимое имя. Измените Выводимое имя (Display Name) учетной записи в оснастке Active Directory – пользователи и компьютеры.
  • Путь к профилю пользователя. Поменяйте Путь к профилю (Profile Path) в оснастке Active Directory – пользователи и компьютеры, а затем переименуйте соответствующую папку на диске.
  • Сценарий входа в систему. Если Вы применяете индивидуальные сценарии входа в систему для каждого пользователя, измените Сценарий входа (Logon Script Name) в оснастке Active Directory – пользователи и компьютеры, и затем переименуйте файл сценария.
  • Домашняя папка. Измените путь к домашней папке в оснастке Active Directory – пользователи и компьютеры (Active Directory Users And Computers), и затем переименуйте соответствующую папку на диске.

Примечание
Если пользователь находится в системе, изменение информации о файлах и папках может привести к накладкам. Следовательно, лучше производить обновление информации в нерабочие часы или попросить пользователя выйти из системы на несколько минут
.

Копирование доменных учетных записей

Создание доменных учетных записей «с нуля» может быть весьма утомительным процессом. Вместо того, чтобы каждый раз создавать новую учетную запись, Вы можете использовать существующую учетную запись в виде отправной точки. Это можно проделать следующим образом:

  1. В оснастке Active Directory – пользователи и компьютеры (Active Directory Users And Computers) щелкните правой кнопкой мыши на имени учетной записи, которую вы хотите скопировать, и выберите команду Копировать (Copy) из контекстного меню.Откроется диалоговое окно Копировать объект – Пользователь (Copy Object – User).
  2. Создайте учетную запись точно таким же образом, как Вы действуете при создании любой другой доменной учетной записи. Затем обновите свойства учетной записи нужным образом.

Как можно ожидать, при создании копии существующей учетной записи в оснастке Active Directory – пользователи и компьютеры не происходит полного переноса информации в новую учетную запись. Сохраняются лишь данные, которые Вам могут понадобиться, а подлежащая обновлению персональная информация пользователя не копируется. В число сохраняемых настроек входят:

  • На вкладке Адрес (Address): улица, область/край, почтовый индекс, страна/регион.
  • На вкладке Организация (Organization): отдел и организация.
  • На вкладке Учетная запись (Account): настройки учетной записи.
  • Рабочие станции для входа в систему и разрешенные часы входа.
  • Срок действия учетной записи.
  • Членство в группах безопасности.
  • Настройки профиля.
  • Разрешения на удаленный доступ.

Примечание
Если Вы использовали переменные среды в настройках профиля базовой учетной записи, эти же переменные будут задействованы в созданной копии учетной записи. Например, если в исходной учетной записи использовалась переменная %UserName%, она будет присутствовать и в настройках новой учетной записи
.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector