Автоматизация создания групп в Active Directory и контроля за ними

Создание групп с помощью команды Dsadd
dsadd group "DN_группы"
Могут использоваться следующие ключи:
-secgrp {yes|no} – тип группы
-scope {l|g|u} – область действия группы
-samid – указывает атрибут sAMAccountName. Если он не указан, то используется имя группы из DN.
-desc – описание группы
-members DN_члена – добавляет члены в группу
-memberof DN_группы – назначает создаваемую группы членом одной или нескольких существующих групп

Извлечение данных о членстве в группе с помощью команды Dsget
Извлечь полный список членов группы, включая вложенные члены можно так:
dsget group "DN_группы" -members [-expand]
где опция expand извлекает члены вложенных групп

Для извлечения полного списка групп, к которым принадлежит пользователь или компьютер (указав опцию expand) можно так:
dsget user "DN_пользователя" -memberof [-expand]
dsget computer "DN_компьютера" -memberof [-expand]

Изменение членства в группе с помощью команды Dsmod
dsmod group "DN_группы" [options]
В опции входят, например, атрибуты samid и desc, с помощью которых можно модифицировать атрибуты sAMAccountName и description группы. Однако, есть ещё две дополнительные опции:
-addmbr “DN_члена” – добавляет члены в группу;
-rmmbr “DN_члена” – удаляет член из группы

Перемещение и переименование групп с помощью команды Dsmove
dsmove DN_объекта [-newname Новое_имя] [-newparent DN_конечного_подразделения]

Удаление групп с помощью команды Dsrm
dsrm DN_группы [-subtree[-exclude]][-noprompt][-c]
Если не указать параметр noprompt, команда предложит подтверждать удаление каждого объекта. Переключатель запускает команду Dsrm в режиме, когда выводятся сообщения об ошибках, однако при этом команда продолжает обработку дополнительных объектов. Без этого переключателя обработка остановится при первой же ошибке.

Управление членством в группе с помощью Windows PowerShell И VBScript

$MemberADSPath = "LDAP://CN=Иван Иванов,OU=Кадры,DC=contoso,DC=com" //определение атрибута aDSPath члена
$objGroup = [ADSI]"LDAP://CN=Анализ,OU=Группы,DC=contoso,DC=com" //подключение к группе
$objGroup.Add ($MemberADSPath) //использование метода Add или Remove

MemberADSPath = "LDAP://CN=Иван Иванов,OU=Кадры,DC=contoso,DC=com"
Set objGroup = GetObject("LDAP://CN=Анализ,OU=Группы,DC=contoso,DC=com")
objGroup.Add MemberADSPath

Изменение типа и области действия группы через командную строку

Для изменение типа и области действия группы через командную строку используется утилита dsmod

dsmod group DN_группы -secgrp { yes | no } -scope { l | g | u }

В качестве DN_группы нужно указать отличительное имя модифицируемой группы.

    • Параметр -secgrp { yes | no } указывает на тип группы: безопасность (yes) или распространение (no)

Параметр -scope { l | g | u } определяет область действия группы: локальная в домене (l), глобальная (g) или универсальная (u).

Область действия и члены группы

Область действия группы

Члены группы из того же домена

Члены группы из другого домена в том же лесу

Члены группы из доверенного внешнего домена

Локальная

Пользователи, компьютеры, глобальные группы, универсальные группы, локальные группы в домене, локальные пользователи (определенные на том же компьютере, где определена локальная группа) Пользователи, компьютеры, глобальные группы и универсальные группы Пользователи, компьютеры, глобальные группы

Локальная в домене

Пользователи, компьютеры, глобальные группы, универсальные группы, локальные группы в домене Пользователи, компьютеры, глобальные группы и универсальные группы, Пользователи, компьютеры, глобальные группы

Универсальная

Пользователи, компьютеры, глобальные группы и универсальные группы Пользователи, компьютеры, глобальные группы и универсальные группы Нет доступа

Глобальная

Пользователи, компьютеры, глобальные группы Нет доступа Нет доступа

Переименование учетной записи пользователя Active Directory

Сделать это можно следующими способами
1) через командную строку
dsmod user DN_пользователя [-upn UPN_имя][-fn Имя][-mi Инициалы][-ln Фамилия][-dn Выводимое_имя][-email Электронный_адрес]
Атрибут sAMAccountName и общее имя (CN) объекта нельзя изменить с помощью команды Dsmod.exe
2) PowerShell
$objUser=[ADSI]"LDAP://DN_пользователя"
$objUser.psbase.rename("CN=Новое_имя_CN_пользователя")

Другие атрибуты можно поменять, воспользовавшись методом Put объекта пользователя.
3) VBScript
Set objOU = GetObject(“LDAP://DN_текущего_подразделения”)
objOU.MoveHere “LDAP://DN_пользователя”, “CN=Новое_имя_CN_пользователя”

Перемещение учетной записи пользователя Active Directory

Можно уже привычно воспользоваться 3 способами (про перенос через графический интерфейс естественно умалчивается, так как понятен)
1)из командной строки с помощью команды DSMOVE
dsmove DN_пользователя -newparent DN_конечного_подразделения
2) с помощью PS
$objUser=[ADSI]"LDAP://DN_пользователя"
$objUser.psbase.MoveTo("LDAP://DN_конечного_подразделения")

3) с помощью VBScript
Set objOU = GetObject("LDAP://DN_конечного_подразделения")
objOU.MoveHere "LDAP://DN_пользователя", vbNullString

Отключение и включение учетной записи пользователя Active Directory

Можно сделать:
1) через командную строку
dsmod user DN_пользователя -disabled yes
2) через PowerShell
$objUser.psbase.InvokeSet ('Account Disabled', $true)
3) через VBScript
objUser.AccountDisabled=TRUE
Для включения соответствующие ключи нужно поменять на противоположные.

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

Сброс пароля пользователя Active Directory

Пароль можно сбросить и потребовать установить новый 4 способами

1) через командную строку с помощью dsmod
dsmod user DN_пользователя -pwd Новый_пароль -mustchpwd yes

2) через PowerShell
$objUser=[ADSI]"LDAP://DN_пользователя"
$objUser.SetPassword("Новый_пароль")
$objUser.Put ("pwdLastSet",0) //требование сменить пароль
$objUser.SetInfo()

3) через VBScript
Set objUser=GetObject("LDAP://DN_пользователя")
objUser.SetPassword "Новый_пароль"
objUser.Put "pwdLastSet",0
objUser.SetInfo

4) импортирование пароля с помощью команды LDIFDE. Подробности по ссылке http://support.microsoft.com/kb/263991

Управление атрибутами пользователей с помощью Windows PowerShell и VBScript

Сценарий в Windows PowerShell

$objUser=[ADSI]"LDAP://cn=Джефф Форд, ou=Кадры, dc=contoso, dc=com"   //подключение к учетной записи в подразделении Кадры
$objUser.put("company", "Contoso,  Ltd.")   //изменение атрибута с помощью метода Put
$objUser.SetInfo()   //подтверждаем изменения в каталоге методом SetInfo

Сценарий в VBScript

Set objUser=GetObject("LDAP://cn=Джефф Форд, ou=Кадры, dc=contoso, dc=com")
objUser.put "company", "Contoso,  Ltd."
objUser.SetInfo()

Для полного удаления атрибута (кроме обязательных) используется метод PutEx. Например для удаления атрибута “office”  используется следующий код в PowerShell:

$objUser.PutEx(1, "office", 0)
$objUser.SetInfo()

и тоже самое в VBScript

objUser.PutEx 1, "office", 0
objUser.SetInfo()