Досить часто адміністратор Active Directory при створенні нових організаційних одиниць (ОУ - організаційні одиниці) повинен негайно створити певну структуру вкладених контейнерів у новому ОУ. Наприклад, під час відкриття нової гілки вам потрібно створити контейнери в новому OU для користувачів, груп, серверів та облікових записів послуг. Щоб не створювати ОУ, а не розподіляти права на них вручну з консолі ADUC (DSA.MSC), ви можете використовувати сценарій PowerShell з цієї статті. Сценарій не тільки створює нові контейнери, але й створює адміністративні групи та надає їм права на новий ОУ.
Для створення нового НУ в Active Directory використовується командир Новий-Adorganiationaluniт З модуля RSAT-Dowershell. Щоб створити OU у зазначеному контейнері, ви можете використовувати таку команду:
Імпорт-модуль ActiveDirectory
Новий -DorganizationalUnit -Name "користувачі" -path "ou = kzn, u = ru, dc = ресурс, dc = loc" -description "контейнер для користувачів Kazan" -passthru
За замовчуванням, створюючи контейнери реклами, для них увімкнено опцію для захисту від видалення (Protededfromaccidentaldelet). Ви можете відключити цю опцію або змінити будь-який інший атрибут одиниці організації в Active Directory за допомогою Set-DorganizationalUnit:
Get -dorganizationalUnit -identity “ou = користувачі, ou = kzn, ou = ru, dc = ресурс, dc = loc” | Set -dorganizationalUnit -protedFromaccidentalde $ false
Щоб видалити OU за допомогою всіх вкладених об'єктів, використовується наступна команда:
Видалити -dobject -identity "ou = користувачі, ou = kzn, ou = ru, dc = ресурс, dc = loc" -urecursive
Розглянемо невеликий сценарій PowerShell, який дозволяє автоматизувати створення типової структури НУ для нових одиниць в Active Directory.
Припустимо, у вашій компанії звично створювати окремий ОУ для кожної гілки з такою структурою вкладених контейнерів:
Name_goroda --- адміністрації --- комп'ютери --- контакти --- групи --- сервери --- облікові записи послуг --- користувачі
Після створення структури ОУ вам потрібно створити групи адміністраторів в AD та делегувати права на OU для них:
- City_admins - Адміністратори філії (максимальні права на всі ОУ)
- City_account_managers - Користувачі з бухгалтерськими правами (створення нових користувачів, пароль, що розряджається в AD та T.D.). Тільки на користувачах OU та облікових записів
- City_wks_admins - Служба технічної підтримки з правами адміністратора на комп’ютерах гілки (право на контейнер для комп'ютерів також додається до локальних комп'ютерів через GPO)
Нижче наведена основна версія такого сценарію PowerShell з коментарями. Сценарій коду CreateUustructure.PS1 Доступно в нашому Github:
# Встановіть назву контейнера
$ City = "nsk"
$ Cityru = "Novosibirsk"
$ Domaindn = (Get-Ddomain).Розрізнень
$ OUS = @(
"Адміністратори",
"Комп'ютери",
"Контакти",
"Групи",
"Сервери",
"Рахунки обслуговування",
"Користувачі"
)
# Створіть ou
$ Newou = new -dorganizationalUnit -Name $ CITY -STRIPY "контейнер для користувачів $ Cityru" -PassThru
Foreach ($ ou in $ ous)
New -dorganizationalUnit -name $ ou -path $ newou
#Створіть адміністративні групи
$ adm_grp = new -dragroup ($ city+"_ admins") -path ("ou = адміністратори, OU ="+$ City+","+$ domaindn) -groupscope global -passthru -verbose
$ adm_wks = new -adgroup ($ city+"_ account_managers") -path ("OU = admins, OU ="+$ City+","+$ domaindn) -grupscope global -passthru -verbose
$ adm_account = new -dragroup ($ city+"_ wks_admins") -path ("OU = admins, OU ="+$ City+","+$ domaindn) -groupscope global -passthru -verbose
##### Приклад встановлення прав на скидання паролів для групи _account_managers для користувачів OU
$ Confadright = "Extendedright"
$ ConfdelegatedObjectTtype = "BF967ABA-0DE6-11D0-A285-00AA0039E2" # Тип об'єкта користувача GUID
$ Confextendeddright = "00299570-246D-11D0-A768-00AA006E0529"
$ Acl = get-acl ("ad: ou = користувачі, ou ="+$ city+","+$ domaindn)
$ adm_AccountsD = [Система.Безпека.Директор.Безпека.Сід
#Будіть запис контролю доступу до лінії (ACE)
$ Acedentity = [система.Безпека.Директор.IdentityReference] $ adm_accountsid
$ Aceadright = [система.Каталогічні послуги.ActiveDirectoryRights] $ confadright
$ acetype = [система.Безпека.Управління доступом.AccessControlType] "Дозволити"
$ Aceinheritancetype = [система.Каталогічні послуги.ActiveDirectorySecurityInheritance] "наявна"
$ ACE = New -Object System.Каталогічні послуги.ActiveDirectoryAccessRule ($ AceIdentity, $ aceadright, $ acetype, $ confextendedright, $ aceinheritancutype, $ confdelegatedObjectType)
# Використовуйте ACL
$ ACL.AddAccessRule ($ ACE)
Set -ocl -path ("ad: ou = користувачі, OU ="+$ City+","+$ domaindn) -aclobject $ acl
######
Заповніть змінні на початку сценарію та запустіть його (не забувайте про політику сценаріїв PowerShell). Сценарій повинен створити потрібну структуру ОУ, групуйте та делегувати права скидання паролів контейнером користувачів.
Ви можете доповнити сценарій, додавши типові операції, які ви виконуєте під час створення OU для нової гілки.
Наприклад, ви можете створити групову політику за допомогою PowerShell і негайно призначити їх на OU:
$ Wksgpo = new -gpo -Name ($ CITY + "_WKS_POLICY") Політика робочих станцій $ City Workstations
Get-gpo $ wksgpo | Новий -gplink -target ("OU = комп'ютери, OU ="+$ City+","+$ domaindn ") -Linkenabled так