Управління active directory за допомогою powershell, windows it pro

ІТ-інфраструктура для вашого підприємства

Коли Windows PowerShell тільки з'явився, багато стали питати, чи можна керувати Active Directory (AD) з використанням PowerShell. В ті часи відповідь Microsoft був не таким, який хотілося б почути більшості адміністраторів. У PowerShell був вбудований «акселератор типів» Active Directory Service Interfaces (ADSI) для доступу до об'єктів AD, але користувачеві доводилося в основному самостійно з'ясовувати, як застосувати PowerShell для вирішення завдань адміністрування AD. Через деякий час компанія Quest Software надала безкоштовний набір команд для адміністративних завдань AD, в тому числі створення, зміни і видалення об'єктів AD, і пошуку об'єктів в AD. Протягом тривалого періоду стан PowerShell і управління AD було таким.

Установка Active Directory Module

На відміну від попередніх інструментів, в яких для зв'язку з AD застосовувався протокол LDAP, модуль AD використовує протоколи Active Directory Web Services (ADWS) для обміну даними з контролером домену (DC) AD. Ці протоколи докладно описані в блозі MSDN «Active Directory Web Services Overview», але досить відзначити, що команди PowerShell в модулі AD і Active Directory Administrative Center (ADAC) використовують ADWS для зв'язку і отримання інформації з AD.

Незалежно від того, встановлені Remote Server Administration Tools на комп'ютері заздалегідь або окремо, наступний крок - відкрити розділ установки і видалення програм Add / Remove Programs в панелі управління і вибрати пункт включення або відключення компонентів Windows - Turn Windows features on or off - в меню зліва . Прокрутіть діалогове вікно компонентів Windows Feature вниз до розділу Remote Server Administration Tools. Знайдіть прапорець Active Directory Module for Windows PowerShell в папці \ Remote Server Administration Tools \ Role Administration Tools \ AD DS and AD LDS Tools, як показано на екрані 1. прапорець і натисніть кнопку OK, щоб встановити модуль.

Управління active directory за допомогою powershell, windows it pro

Екран 1. Встановлення модуля AD для PowerShell

Після цього ви повинні побачити ярлик Active Directory Module for Windows PowerShell в розділі Administrative Tools меню Start. Клацніть цей ярлик, щоб запустити PowerShell з завантаженим модулем AD. Якщо ви вже працюєте в PowerShell і хочете просто завантажити модуль, щоб він став доступним для використання, можна ввести наступну команду і отримати доступ до команд AD і AD Provider:

Тепер подивимося, як переміщатися по AD за допомогою AD Provider.

Використання Active Directory Provider

У PowerShell реалізована концепція дисків PowerShell, які я буду називати просто дисками PS. Спрощено можна назвати диск PS поданням ресурсу, такого як придатна для навігації файлова система, що складається з папок і кінцевих елементів. Чи не кожен ресурс можна уявити таким чином, але багато (в тому числі AD і реєстр) добре вписуються в цю модель. Модуль AD містить провайдера для диска PS AD. Відповідно, можна переміщатися і навіть змінювати AD, як ніби це файлова система.

Як же переміщатися по AD, використовуючи AD Provider? Передбачається, що PowerShell відкритий і модуль AD завантажений. У цьому випадку перший крок - запустити команду Set-Location, яка має кілька псевдонімів, в тому числі sl і cd:

Ця команда змінює поточний робочий стан диска PS AD. В результаті запрошення PowerShell покаже AD: \ замість C: \. Потім, щоб побачити елементи в диску PS AD, можна застосувати команду Get-ChildItem з псевдонімом dir:

На екрані 2 показаний приклад результату на моєму комп'ютері.

Управління active directory за допомогою powershell, windows it pro

Екран 2. Список розділів домену, доступних в PS-диску AD

Як ми бачимо, команда повертає список всіх доступних розділів домену. Найцікавіший, на мій погляд, - розділ домену з ім'ям cpandl, який містить імена користувачів і комп'ютерів. Щоб змінити цей домен, досить ввести команду:

Зверніть увагу, що використовується команда Set-Location з различающимся ім'ям (DN) мого домену AD. Це потрібно для коректної навігації. Після переходу в каталог домену (на що вказує запрошення AD: \ dc = cpandl, dc = com в PowerShell), можна використовувати команду Get-ChildItem, щоб побачити структуру AD верхнього рівня (екран 3).

Управління active directory за допомогою powershell, windows it pro

Якщо потрібно поглянути на користувачів в організаційній одиниці (OU) SDM, то для переходу в цю OU досить ввести:

Командний рядок PowerShell матиме вигляд AD: \ ou = SDM, dc = cpandl, dc = com. На даному етапі можна використовувати команду Get-ChildItem, щоб побачити всі об'єкти користувача в цьому OU. Якщо потрібно змінити властивість Description на об'єкті користувача, що представляє мій профіль користувача Darren Mar-Elia. Для цього є команда! Команда Set-ItemProperty дозволяє змінити властивість в об'єкті AD. Якщо потрібно змінити опис облікового запису користувача на Chief Techie, слід виконати команду:

Як ми бачимо, тут використовується параметр -Path для вказівки мого профілю користувача в поточному каталозі. Я також використовую параметр -Name, щоб вказати, що потрібно змінити властивість Description, і параметр -Value, для вказівки опису Chief Techie.

Зверніть увагу, що якщо потрібно знайти всі об'єкти з певним значенням властивості, можна задіяти Get-ItemProperty. Якщо потрібно просто отримати посилання на об'єкт AD, використовуйте Get-Item.

Як бачите, працювати з AD таким чином досить просто. Механізм навряд чи підходить для масових змін, проте він зручний для роботи з AD як файлову систему. При цьому, як я з'ясував, більшість адміністраторів використовує команди замість диска PS AD для управління AD. Подивимося, як діють деякі з цих команд.

Застосування команд Active Directory

Модуль для AD, що поставляється з Windows 7, містить 76 команд для управління AD. Їх можна використовувати майже будь-якою метою, в тому числі пошуку об'єктів AD, створення і видалення об'єктів AD і маніпуляцій з інформацією про налаштування AD (наприклад, режим лісу і детальна політика паролів). Зазвичай команди групуються по дієслів, таким як Add-, Remove-, Get- і Set-. Зверніть увагу, що не кожна команда Get- має відповідну команду Set- і навпаки, тому іноді доводиться витратити зусилля, щоб знайти потрібну команду для завдання. Наприклад, можна встановити рівень функціональності лісу AD з використанням Set-ADForestMode, але щоб з'ясувати поточний рівень функціональності лісу, необхідно задіяти команду Get-ADForest і подивитися властивість ForestMode на повернутому об'єкті.

Розглянемо кілька типових задач, які можна виконати за допомогою команд AD. Зокрема, далі буде показано, як додати облікові записи користувача, управляти членством в групі, скинути паролі облікових записів користувача і виконувати пошук об'єктів AD.

Додавання облікових записів користувача

Команда New-ADUser забезпечує простий спосіб додавати облікові записи користувача в AD. Якщо потрібно додати новий обліковий запис користувача з ім'ям Bill Smith в організаційну одиницю SDM, то в найпростішому випадку можна створити обліковий запис нового користувача за допомогою команди:

У цій команді вводиться основна інформація про обліковий запис користувача. Зокрема, параметр -SamAccountName служить для надання імені облікового запису SAM, необхідної для створення об'єкта користувача. Також застосовується параметр -Path, щоб повідомити команді місце, куди слід помістити об'єкт - в даному випадку в організаційну одиницю SDM в домені cpandl.com. Крім того, зазначено ім'я користувача (параметр -GivenName), прізвище (параметр -Surname) і коротке ім'я (параметр -DisplayName).

Щоб уникнути необхідності активувати обліковий запис і призначати пароль окремо, можна змінити команду New-ADUser. New-ADUser автоматично активує обліковий запис, якщо вказати параметр -Enabled $ true в команді. Для активування потрібно пароль, тому необхідно також вказати його в команді.

Щоб надати пароль, можна використовувати параметр -AccountPassword. Однак не можна ввести пароль простим текстом в командному рядку. Цей параметр вимагає, щоб пароль був введений в захищеній рядку (тобто мав тип даних SecureString). Існує два способи перетворити пароль в захищену рядок, і в обох випадках використовується змінна.

У першому методі застосовується команда ConvertTo-SecureString, яка перетворює рядки простого тексту в захищені рядки. Наприклад, якщо потрібно перетворити пароль P @ ssw0rd12 в захищену рядок і призначити його змінної $ pwd, слід виконати команду:

Це не найбезпечніший метод призначення пароля, так як хтось може заглянути вам через плече при введенні команди. Більш надійний спосіб, якщо команда New-ADUser запросить пароль і буде приховувати Зауважте, що ви. Це можна зробити за допомогою команди Read-Hostcmdlet з параметром -AsSecureString:

Після виконання цієї команди ви побачите на екрані знайомий символ «*» при введенні пароля. Завершивши введення, натисніть клавішу Enter.

Після того, як пароль збережений в змінній $ pwd, можна передати його в команду New-ADUser:

Як ми бачимо, команда містить параметри -Enabled і -AccountPassword, які активують обліковий запис і безпечно призначають їй пароль.

Створення призначених для користувача облікових записів по одній - акуратний спосіб, але іноді потрібно створити кілька облікових записів одночасно. PowerShell прекрасно підходить для цієї мети. Наприклад, якщо потрібно створити три облікових записи користувача, то можна підготувати файл з поділом запитом (CSV), який містить інформацію про обліковий запис, а потім використовувати команду Import-CSV для передачі цієї інформації в New-ADUser.

На екрані 4 показаний файл CSV з ім'ям userlist.csv.

Управління active directory за допомогою powershell, windows it pro

Екран 4. Застосування CSV-файлу для створення декількох призначених для користувача облікових записів одночасно

Зверніть увагу, що в цьому файлі заголовки стовпців відповідають іменам параметрів, наданих у попередній команді New-ADUser. Це зроблено спеціально. Коли дані CSV передаються в New-ADUser, команда вибере ці імена параметрів з конвеєра PowerShell і їх не доведеться вказувати в самій команді. Ось команда, яка застосовувалася для створення трьох облікових записів користувача:

Як можна помітити, вихідні рядки команди Import-CSV надходять в команду New-ADUser. Конвеєр розпізнає, що заголовки стовпця в CSV-файлі є імена параметрів, а інші рядки містять значення, тому потрібно лише надати параметри -Enabled і -AccountPassword. Це чудова можливість конвеєра. Завдяки їй вдається набагато ефективніше використовувати PowerShell для задач автоматизації такого типу.

Управління членством в групах

Додавання облікових записів користувачів і комп'ютерів - типова задача управління AD. За допомогою модуля AD виконати її порівняно нескладно. Використовуючи команду Add-ADGroupMember, можна додати в групу одну або кілька облікових записів. Наприклад, якщо потрібно додати трьох нових користувачів в групу Marketing Users. Найпростіший спосіб - використовувати команду:

У цій команді параметр -Identity служить для того, щоб надати ім'я групи. Також застосовується параметр -Members для надання імен облікових записів SAM користувачів. За наявності кількох імен облікових записів SAM, то їх слід вказати у файлі з роздільниками у вигляді ком.

Можна об'єднати операції створення трьох облікових записів і їх потрібно додати до групи Marketing Users в одній команді, щоб вирішити задачу однією дією. Однак команда Add-ADGroupMember не підтримує передачу імен членів групи в конвеєр. Тому необхідно використовувати команду Add-ADPrincipalGroupMembership, якщо потрібно задіяти конвеєр. Ця команда може приймати об'єкти користувача, комп'ютера або групи як вхідні з конвеєра і додавати ці об'єкти в зазначену групу.

З'єднати операцію створення користувачів з операцією додавання нових користувачів до групи Marketing Users в одній команді можна наступним чином:

Зверніть увагу, що до частини New-ADUser команди доданий параметр -PassThru. Цей параметр вказує New-ADUser, що потрібно передати створені об'єкти користувача в конвеєр. Якщо даний параметр не вказано, то виконання команди Add-ADPrincipalGroupMembership завершиться невдачею.

Також примітно, що встановлюється параметр -MemberOf для вказівки імені групи в розділі Add-ADPrincipalGroupMembership команди. Конвеєр забезпечує інше, додаючи кожного з трьох користувачів в групу Marketing Users.

Отже, за допомогою однієї команди PowerShell було створено три нових користувача, вони були розміщені в OU, отримали паролі і були додані до групи Marketing Users. Тепер розглянемо деякі інші типові завдання обслуговування AD, які можна автоматизувати з використанням PowerShell і модуля AD.

Скидання паролів облікових записів користувача

Іноді користувачам потрібно скинути пароль облікового запису. Це завдання легко автоматизувати за допомогою команди Set-ADAccountPassword, змінивши або скинувши пароль облікового запису. Щоб змінити пароль, необхідно знати старий пароль і ввести новий. Щоб скинути пароль, достатньо надати новий пароль. Однак необхідно дозвіл Reset Password на об'єкт користувача в AD, щоб виконати скидання пароля.

Як і параметр -AccountPassword команди New-ADUser, команда Set-ADAccountPassword використовує тип даних SecureString для паролів, тому необхідно задіяти один з методів перетворення простих текстових паролів в захищені рядки. Наприклад, якщо потрібно скинути пароль для облікового запису користувача Tom Thumb, то після збереження нового пароля як захищеної рядки в змінній $ pass можна виконати команду:

У цій команді я використовую параметр -Identity, щоб призначити ім'я облікового запису SAM для облікового запису користувача Tom Thumb. Я також вводжу параметр -NewPassword зі змінною $ pass, щоб надати новий пароль. Нарешті, задається параметр -Reset, щоб вказати, що виконується скидання, а не зміна пароля.

Ще одна додаткова задача: переключити прапор облікового запису користувача Tom Thumb, щоб змусити його змінити пароль при наступній реєстрації. Це звичайний прийом, коли потрібно скинути пароль користувача. Дану задачу можна виконати за допомогою команди Set-ADUser, присвоївши параметру -ChangePasswordAtLogon значення $ true:

Виникає питання, чому не був використаний конвеєр для передачі виведення команди Set-ADAccountPassword в команду Set-ADUser, щоб виконати обидві операції в одній команді PowerShell. Я спробував цей підхід, він не працює. Ймовірно, в команді Set-ADAccountPassword є якесь обмеження, що не дозволяє успішно виконати єдину команду. У будь-якому випадку, досить просто перемкнути прапор з використанням команди Set-ADUser, як показано вище.

Пошук об'єктів Active Directory

При запуску команди відображаються об'єкти, відповідні критерієм. Або ж можна направити результати в іншу команду для обробки знайдених об'єктів.

Зверніть увагу, що для масштабних пошуків корисно задіяти параметр -ResultPageSize, щоб управляти розбивкою результатів пошуку на сторінки. Зазвичай я привласнюю цим параметром значення 1000, і команда Get-ADObject повертає ніж 1000 об'єктів за один раз. В іншому випадку можна не отримати очікуваний результат, так як число повертаються об'єктів перевищує максимально передбачене політикою, встановленої для одного запиту пошуку.

Інша команда для пошуку, надана компанією Microsoft, - Search-ADAccount. Ця команда особливо корисна для пошуку з різними заздалегідь заданими умовами, наприклад відключених облікових записів, облікових записів з простроченими паролями і блокованих облікових записів. Так, наступна команда шукає всі облікові записи користувача з простроченими паролями в OU SDM:

У цій команді використовується параметр -PasswordExpired, який вказує, що потрібні облікові записи з простроченими паролями. Параметр -UsersOnly вказує, що потрібно шукати тільки об'єкти користувача (тобто виключити об'єкти «комп'ютер»). Як в попередньому прикладі, то будуть використовуватися установки -SearchBase і -SearchScope, щоб вказати область пошуку. Але в даному випадку я використовую параметр OneLevel для пошуку тільки в найближчому OU (тобто виключаючи будь-які дочірні організаційні одиниці).

Це лише поверхневий розповідь про модуль AD, але сподіваюся, ви отримали уявлення про закладені в ньому можливості. Як зазначалося вище, в модулі більше 70 команд. Серед тем, які не були порушені в статті, - видалення об'єктів з використанням команди Remove-, відновлення видалених об'єктів за допомогою команди Restore-ADObject і видалення властивостей UAC на об'єктах користувача за допомогою команди Set-ADAccountControl. Існують команди майже для будь-яких адміністративних завдань AD.

Поділіться матеріалом з колегами і друзями