Адміністрація облікових записів у домені Active Directory. Домен Active Directory - що це простими словами, опис та відгуки

17.03.2014 Даррен Мар-Еліа

Коли Windows PowerShell тільки з'явився, багато хто запитував, чи можна керувати Active Directory(AD) за допомогою PowerShell. У ті часи відповідь Microsoft була не такою, якою хотілося б почути більшості адміністраторів. PowerShell мав вбудований "акселератор типів" Active Directory Service Interfaces (ADSI) для доступу до об'єктів AD, але користувачеві доводилося в основному самостійно з'ясовувати, як застосувати PowerShell для вирішення завдань адміністрування AD. Значні зміни відбулися з випуском Windows Server 2008 R2, де з'явився модуль PowerShell для Active Directory. В модуль AD входить набір команд для керування AD, а також AD Provider, за допомогою якого можна переміщатися AD, як по диску з символьним позначенням. У цій статті я покажу, як встановити модуль AD і докладно опишу його функціонування

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

Значні зміни відбулися із випуском Windows Server 2008 R2, у якому з'явився модуль PowerShell для Active Directory. В модуль AD входить набір команд для керування AD, а також AD Provider, за допомогою якого можна переміщатися AD, як по диску з символьним позначенням. У цій статті я покажу, як встановити модуль 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.

У разі встановлення контролерів домену Windows Server 2012 або Server 2008 R2 в домені AD протокол ADWS встановлюється і запускається за промовчанням на кожному з них. Якщо ваш домен складається з контролерів домену Windows Server 2008 або Windows Server 2003, необхідно встановити ADWS окремо. Microsoft безкоштовно надає Active Directory Management Gateway Service для цієї мети. Якщо встановити пакет принаймні на одному контролері домену AD Server 2008 або Server 2003, можна використовувати модуль AD для PowerShell поряд з ADAC.

Модуль AD встановлюється за замовчуванням на будь-якому DC з операційною системою Server 2012 або Server 2008 R2. на комп'ютерах Windows 8 та Windows 7 (або будь-якому комп'ютері, крім DC, що працює з Server 2012 або Server 2008 R2), необхідно встановити засоби віддаленого адміністрування сервера Remote Server Administration Tools із центру завантаження Microsoft.

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

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

Import-Module ActiveDirectory

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

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

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

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

Set-Location AD:

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

Get-ChildItem

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

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

Set-Location "dc=cpandl,dc=com"

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


Екран 3. Перегляд верхнього рівня ієрархії AD

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

Set-Location "OU=SDM"

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

Set-ItemProperty -Path ".\CN=Darren Mar-Elia" ` -Name "Description" -Value "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, то в найпростішому випадку можна створити обліковий запис нового користувача за допомогою команди:

New-ADUser -Name "Bill Smith" -SamAccountName "bsmith" `-GivenName "Bill" -Surname "Smith" `-DisplayName "Bill Smith" -Path "OU=SDM,DC=cpandl,DC=com"

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

Виконання цієї команди призведе до створення облікового запису користувача, але є дві проблеми. По-перше, обліковий запис буде вимкнено. По-друге, з обліковим записом не буде пов'язаний пароль, що потрібна в більшості доменів.

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

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

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

$pwd = ConvertTo-SecureString -string "P@ssw0rd12" `-AsPlainText –force

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

$pwd = Read-Host -AsSecureString

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

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

New-ADUser -Name»Bill Smith«-SamAccountName»bsmith«`-GivenName»Bill«-Surname»Smith«'-DisplayName»Bill Smith«'-Path»OU=SDM,DC=cpandl,DC=com«` - Enabled $true -AccountPassword $pwd

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

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

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

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

Import-CSV -Path C:\data\userlist.csv | New-ADUser -Enabled $true -AccountPassword $pwd

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

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

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

Add-ADGroupMember -Identity»Marketing Users«` -Members jadams,tthumb,mtwain

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

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

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

Import-CSV -Path C:\data\userlist.csv | New-ADUser -Enabled $true -AccountPassword $pass `-PassThru | Add-ADPrincipalGroupMembership `-MemberOf»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 можна виконати команду:

Set-ADAccountPassword -Identity»tthumb«` -NewPassword $pass –Reset

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

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

Set-ADUser -Identity tthumb -ChangePasswordAtLogon $true

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

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

Інша типова задача AD – пошук об'єктів AD, що відповідають певним критеріям. Наприклад, можна знайти всі комп'ютери з певною версією операційної системи Windows у домені AD. Команда Get-ADObject – найзручніша для пошуку LDAP. Наприклад, щоб знайти комп'ютери Server 2008 R2 у домені cpandl.com, була застосована команда:

Get-ADObject -LDAPFilter ` "(&(operatingSystem=Windows Server 2008 R2 Enterprise)` (objectClass=computer))"-SearchBase"dc=cpandl,dc=com"` -SearchScope Subtree

Ця команда використовує три параметри для виконання завдання: -LDAPFilter, -SearchBase та -SearchScope. Параметр -LDAPFilter приймає як вхідний стандартний запит LDAP. У цьому прикладі запитуються всі об'єкти комп'ютера, у яких атрибут OperatingSystem має значення Windows Server 2008 R2 Enterprise. Параметр -SearchBase вказує команді, де розпочати пошук в ієрархії AD. В даному випадку виконується пошук з кореневого каталогу домену AD, але не важко обмежити пошук певної OU. Параметр –SearchScope вказує команді, чи слід оминати всі контейнери під базою пошуку, виявляючи зазначені об'єкти. У цьому випадку використовується параметр Subtree, щоб команда перевіряла всі контейнери, що знаходяться нижче.

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

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

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

Search-ADAccount -PasswordExpired -UsersOnly `-SearchBase»OU=sdm,dc=cpandl,dc=com«` -SearchScope OneLevel Search-ADAccount -PasswordExpired -UsersOnly `-SearchBase»OU=sdm,dc=cpandl,dc= `-SearchScope OneLevel

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

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



Заняття 7. Адміністрація Active Directory.

Процес адміністрування Active Directory полягає в управлінні:

  • доменами Active Directory;
  • структурою каталогу домену;
  • об'єктами домену (користувачами, контактами, комп'ютерами, групами, принтерами тощо);
  • сайтами та мережами Active Directory;
  • реплікацією даних.

Всі ці завдання вирішуються за допомогою трьох консолей керування, які встановлюються в процесі встановлення Active Directory на контролер домену:

  • Active Directory - домени та довіра
  • Active Directory - користувачі та комп'ютери
  • Active Directory - сайти та служби

На інші комп'ютери домену ці консолі можуть бути встановлені в пакеті адміністративних утиліт.

Опис об'єктів Active Directory.

Усі консолі керування Active Directory використовують єдиний набір іконок для відображення об'єктів каталогу. Нижче наведено всі основні об'єкти Active Directory та відповідні значки. Ця інформація допоможе вам легше орієнтуватись у каталозі Active Directory.

Active Directory

Представляє каталог Active Directory загалом. В інструментах управління практично не зустрічається, за винятком вікон пошуку та вибору об'єктів

Домен Windows. Дозволяє керувати глобальними параметрами домену

Контейнер, папка

Є простий контейнерний об'єкт. Такі об'єкти можуть створюватися лише операційною системою і зазвичай генеруються під час встановлення Active Directory

Організаційний підрозділ

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

Користувач

Показує обліковий запис користувача. Об'єкт містить велику кількість атрибутів, що описують користувача

Представляє користувача – не члена домену. Контакти використовуються для зберігання в каталозі інформації про зовнішніх користувачів, не є обліковими записами та не дозволяють користувачам реєструватися в домені

Представляє групу користувачів і зазвичай використовується для спрощення керування дозволами та привілеями

Комп'ютер

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

Контролер домену

Є окремий контролер домену Windows. У оснастці Active Directory - користувачі та комп'ютери контролери домену відображаються такими самими значками, що й звичайні комп'ютери. Зазначений значок використовується для відображення контролерів домену в оснастці Active Directory - сайти та служби. Дозволяє керувати параметрами контролера домену

Надає мережевий принтер. Об'єкт є посиланням на принтер, наданий у спільний доступ. Об'єкти цього типу можуть бути додані до каталогу як вручну, так і автоматично. Ручне додавання можливе лише для принтерів, підключених до комп'ютерів під керуванням попередніх версій, ніж Windows 2000

Загальний ресурс

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

Параметри ліцензування

Надає глобальні параметри ліцензування сайту. Дозволяє централізовано керувати ліцензіями на програмні продуктита їх реплікацією в межах сайту

Доменна політика

Являє об'єкт доменної політики. Дозволяє налаштовувати параметри політики рівня домену

Політика контролера домену

Представляє об'єкт політики контролера домену. Дозволяє настроювати параметри політики для всіх контролерів домену

Групова політика

Представляє довільний об'єкт групової політики. Дозволяє керувати параметрами політики для об'єктів того контейнера, до якого застосовано

Надає окремий сайт Active Directory. Дозволяє керувати його параметрами. Містить посилання на об'єкти контролерів доменів, зв'язки сайтів, параметри сайту

З'єднання

З'єднання між контролерами доменів в межах сайту. Дозволяє керувати топологією та параметрами реплікації між контролерами домену всередині сайту

Зв'язок сайтів

Надає окремий зв'язок між сайтами. Дозволяє керувати топологією та параметрами міжсайтової реплікації.

Параметри сайту

Представляє об'єкт конфігурації сайту або контролера домену на сайті. Дозволяє керувати параметрами реплікації всього сайту або параметрами взаємодії контролера домену з сайтом

Представляє окрему мережу, пов'язану з певним сайтом. Дозволяє вказати межі IP-мережі

Значок

Об'єкт

Опис

Перезавантажити сервер.

Введіть пароль для режиму відновлення служби каталогу.

Підтвердити розташування папок для збереження файлів AD.

Підтвердити ім'я домену NetBIOS.

7. Вибрати рівень безпеки для користувачів та груп:

· Дозволи сумісні з перед-Windows 2000 server– якщо в домені є програми або служби, які працюють на серверах під керуванням Windows NT, або комп'ютер входить до домену під керуванням Windows NT.

· Дозволи сумісні лише з Windows 2000 Server та Windows Server 2003– якщо в домені працюють лише сервери під керуванням Windows 2000 Server та Windows Server 2003.

Для адміністрування Active Directory використовується набір оснасток керування Active Directory. Він складається з чотирьох оснасток:

1 Active Directory User and Computers (користувачі та комп'ютери) – призначена для адміністрування облікових записів користувачів та комп'ютерів домену.

2 Active Directory Domains and Trusts (домени та довіра) – використовується для встановлення довірчих відносин між доменами.

3 Active Directory Sites and Service (сайти та служби) – призначена для керування сайтами та зв'язками сайтів.

4 DNS – адміністрування сервера DNS, інтегрованого в Active Directory.

Active Directory користувачі та комп'ютери.

Облікові записи користувачів та облікові записи комп'ютерів Active Directory є такими ж фізичними об'єктами, як комп'ютер або користувач. Облікові записи користувачів також можуть використовуватися як записи виділених служб для деяких програм.

Обліковий запис користувача– об'єкт Active Directory, який містить усі відомості, які визначають користувача в операційній системі Windows. До цих відомостей належать:

· Особисті дані користувача (ПІБ, телефон, e-mail, поштова адреса, відомості про організацію);

· параметри облікового запису (ім'я користувача та пароль, необхідні для входу користувача в систему, термін дії облікового запису, керування паролем, параметри шифрування та автентифікації);

· Імена груп, членом яких користувач є;

· профіль користувача (містить відомості про налаштування для конкретного користувача, такі як налаштування робочого столу, постійні мережеві підключення та параметри додатків);

· Інші відомості (профіль служб терміналів, віддалене управління, Керування сеансом та ін).

Обліковий запис комп'ютера- об'єкт Active Directory, що однозначно визначає комп'ютер у домені. Обліковий запис комп'ютера відповідає імені комп'ютера в домені. Комп'ютер, обліковий запис якого додано до домену, може брати участь у виконанні мережних операцій, які використовують вміст Active Directory. Наприклад, робоча станція, додана до домену, отримує можливість розпізнавати облікові записи та групи, що існують у Active Directory.



@ Комп'ютери з операційними системами Windows 95, Windows 98 і Windows Me не мають додаткових функцій безпеки і не можуть бути призначені облікові записи комп'ютерів.

Група– це сімейство облікових записів користувачів та комп'ютерів, контактів та інших груп, якими можна керувати як єдиним цілим. Користувачі та комп'ютери, що належать до окремої групи, називаються членами групи. Групи Active Directory є об'єктами каталогу, які розташовуються всередині об'єктів контейнера домену та підрозділи.

Групи Active Directory дають можливість:

· Спрощувати адміністрування, призначаючи дозволи на загальний ресурс для групи, а не для індивідуальних користувачів. Це забезпечує однаковий доступ до ресурсу всім членів цієї групи;

· делегувати адміністрування, призначаючи права користувачам відразу для всієї групи через групову політику, а потім додаючи необхідних членів до групи, які повинні мати самі права, як і група;

Групи характеризуються їх областю дії та типом. Область дії групи визначає діапазон, у якому застосовується група всередині домену чи лісу. Існують три різні області дії: універсальна, глобальна та локальна доменна.

· Локальна доменна (локальна вбудована)– члени груп з локальною доменною областю дії можуть містити інші групи та облікові записи з доменів Windows Server 2003, Windows 2000 або Windows NT, і їм можуть бути надані дозволи лише всередині домену.

@ Локальні доменні групи слід використовувати для керування доступом до ресурсів у межах одного домену.

· Глобальна– члени груп із глобальною областю дії можуть включати інші групи та облікові записи лише з домену, в якому визначено групу, і їм можуть бути надані дозволи у будь-якому домені лісу.

@ Групи з глобальною областю дії рекомендується застосовувати для керування об'єктами каталогу, які вимагають щоденної підтримки. Такими, наприклад, є облікові записи користувачів та комп'ютерів. Оскільки групи з глобальною областю дії не реплікуються за межі свого домену, облікові записи, що містяться в таких групах, можна часто змінювати, не викликаючи додаткового трафіку, пов'язаного з реплікацією до глобального каталогу.

· Універсальна- члени груп з універсальною областю дії можуть включати інші групи та облікові записи з будь-якого домену в дереві доменів або лісу, також можуть надаватися дозволи в будь-якому домені у складі дерева доменів або лісу.

@ Призначайте універсальну область дії груп, що об'єднують домени. Для цього додайте облікові записи до груп з глобальною областю дії, а потім вкладіть ці групи до груп з універсальною областю дії. З використанням такого підходу зміна членства у групах із глобальною областю дії впливає групи з універсальної областю дії.


Тип групи визначає, чи може група використовуватись для призначення дозволів для ресурсів або лише для списків розсилки електронної пошти.

Групи безпеки– забезпечують ефективне керування доступом до ресурсів мережі. Використання груп безпеки дозволяє виконувати такі дії:

· Призначати права користувача групі безпеки Active Directory. Права користувача, задані для груп безпеки, визначають, що може робити член цієї групи у сфері дій домену (чи лісу). Права користувача автоматично задаються для груп безпеки під час встановлення Active Directory для допомоги адміністраторам у визначенні ролі адміністративних користувачів у домені. Наприклад, користувач, доданий до групи «Оператори архіву» в Active Directory, отримує можливість створювати архіви та відновлювати файли та каталоги на будь-якому контролері домену в домені. Можна задати права користувачів групі безпеки, використовуючи групову політику для делегування конкретних завдань. При завданні делегованих завдань необхідно бути обережними. Недосвідчений користувач, наділений надто великими правами в групі безпеки, потенційно може завдати серйозної шкоди мережі.

· Призначати дозволи на використання ресурсів для груп безпеки. Не слід плутати дозволи з правами користувачів. Дозволи визначаються для груп безпеки, які використовують спільні ресурси. Дозволи визначають, хто може отримати доступ до цього ресурсу та рівень доступу, наприклад, повний доступ. Деякі дозволи, встановлені для об'єктів домену, автоматично задаються для різних рівнів доступу груп за промовчанням, таких як «Оператори обліку» або «Оператори домену». Щоб отримати додаткові відомості про дозвіл, див. Управління доступом до Active Directory.

@ Групи безпеки перераховані у виборчих таблицях управління доступом, які визначають дозволи на ресурси та об'єкти. Адміністраторам слід призначати дозволи для ресурсів (загальних файлів, принтерів тощо) групам безпеки, а не окремим користувачам. Дозволи призначаються групі один раз замість призначення прав кожному окремому користувачеві. Кожний обліковий запис при додаванні до групи отримує права, задані цій групі в Active Directory, та дозволи, визначені для цієї групи на ресурсі.

Групи розповсюдження– використовуються лише програмами електронної пошти для надсилання повідомлень електронної пошти групам користувачів. Групи розповсюдження не використовують систему безпеки, інакше кажучи, вони не можуть бути включені до виборчих таблиць управління доступом (DACL). Якщо група створюється для контролю доступу до загальних ресурсів, ця група має бути групою безпеки.

@ Групи безпеки також можуть використовуватися як адресати електронної пошти, так і групи розповсюдження. Повідомлення електронної пошти, надіслане групі, надсилається всім членам групи.

Існують також групи, для яких не можна змінити або переглянути відомості про членство. Ці групи називаються спеціальними посвідченнями та використовуються для представлення різних користувачів у різні моменти часу, залежно від обставин.

(Анонімний вхід, Все, Мережа, Інтерактивні)

Наприклад, група "Все" представляє всіх поточних користувачів мережі, включаючи гостей та користувачів з інших доменів. Додаткові відомості див. у розділі Спеціальні посвідчення.

Облікові записи користувачів та комп'ютерів (а також групи) називаються учасниками безпеки. Учасники безпеки є об'єктами каталогів, яким автоматично призначаються коди безпеки (SID) для доступу до ресурсів домену. Обліковий запис користувача або комп'ютера використовується для таких цілей:

· автентифікація користувача або комп'ютера.

· Дозвіл або заборона доступу до ресурсів домену.

· адміністрування інших учасників безпеки (для подання учасника безпеки із зовнішнього довіреного домену).

· аудит дій, які виконуються з використанням облікового запису користувача або комп'ютера.

Для призначення прав одночасно великому числукористувачів використовують групи безпеки. Облікові записи можуть бути груповані з використанням організаційних одиниць (контейнерів).

Для забезпечення безпеки автентифікації користувача слід створювати окремі облікові записи для кожного користувача мережі, застосовуючи для цього оснащення « Active Directory користувачі та комп'ютери ».

Кожен обліковий запис користувача Active Directory має ряд параметрів, що стосуються безпеки та визначальних, як здійснюється перевірка автентичності цього облікового запису при вході до мережі.

Присвячується використання PowerShell для адміністрування AD. Як вихідний пункт автор вирішив взяти 10 типових завдань адміністрування AD і розглянути, як їх можна спростити, використовуючи PowerShell:

  1. Скинути пароль користувача
  2. Активувати та деактивувати облікові записи
  3. Розблокувати обліковий запис користувача
  4. Видалити обліковий запис
  5. Знайти порожні групи
  6. Додати користувачів до групи
  7. Вивести список членів групи
  8. Знайти застарілі облікові записи комп'ютерів
  9. Деактивувати обліковий запис комп'ютера
  10. Знайти комп'ютери за типом

Крім цього автор веде блог (за PowerShell, звичайно), рекомендуємо заглянути - jdhitsolutions.com/blog. А найактуальніше Ви можете отримати з його твіттера twitter.com/jeffhicks.
Отже, наведено нижче переклад статті “Top 10 Active Directory Tasks Solved with PowerShell”.

Управління Active Directory (AD) за допомогою Windows PowerShell це простіше, ніж Ви думаєте, і я хочу довести Вам це. Ви можете просто взяти наведені нижче скрипти і за допомогою їх вирішити ряд завдань з управління AD.

Вимоги

Щоб використовувати PowerShell для керування AD, потрібно дотриматися кількох вимог. Я збираюся продемонструвати, як командлети AD працюють на прикладі комп'ютера на Windows 7.
Щоб використовувати командлети, контролер домену у Вас повинен бути рівня Windows Server 2008 R2, або Ви можете завантажити та встановити Active Directory Management Gateway Service на успадкованих контролерах домену (legacy DCs). Уважно прочитайте документацію перед встановленням; потрібно перезавантаження КД.
На стороні клієнта, завантажте та встановіть (RSAT) або для Windows 7 або для Windows 8 . У Windows 7 Вам необхідно буде відкрити в Панелі керування (Control Panel)розділ Програми (Programs)та вибрати Увімкнути або вимкнути функції Windows (Turn Windows Features On or Off). Знайдіть Remote Server Administration Toolsта розкрийте розділ Role Administration Tools. Виберіть відповідні пункти для AD DS and AD LDS Tools, особливо зверніть увагу на те, що потрібно вибрати пункт Active Directory Module для Windows PowerShell, як показано на малюнку 1. (У Windows 8 усі інструменти вибрано за замовчуванням). Тепер ми готові до роботи.

Рис.1 Увімкнення AD DS та AD LDS Tools

Я увійшов до системи під обліковим записом із правами доменного адміністратора. Більшість командлетів, які я показуватиму, дозволять Вам уточнити альтернативні повноваження (credentials). У будь-якому випадку я рекомендую прочитати довідку ( Get-Help) і приклади, які я демонструватиму нижче.
Почніть сесію PowerShell та імпортуйте модуль:

PS C:\> Import-Module ActiveDirectory

В результаті імпорту створюється новий PSDrive, але ми не використовуватимемо його. Однак, Ви можете переглянути, які команди є в імпортованому модулі.

PS C:\> get-command -module ActiveDirectory

Принадність цих команд у тому, що якщо я можу використовувати команду для одного об'єкта AD, то її можна використовувати для 10, 100 і навіть 1000. Подивимося, як деякі з цих командлетів працюють.

Завдання 1: Скидання пароля користувача

Почнемо з типового завдання: скидання пароля користувача. Зробити це легко та просто можна через командлет Set-ADAccountPassword. Складна частина полягає в тому, що новий пароль має бути уточнений як захищений рядок: фрагмент тексту, який зашифрований та зберігається у пам'яті під час PowerShell сесії. По-перше, створимо змінну з новим паролем:
PS C:\> $new=Read-Host "Enter the new password" -AsSecureString

Потім введемо новий пароль:

Тепер ми можемо отримати обліковий запис (використання samAccountnameкращий варіант) і встановити новий пароль. Ось приклад для користувача Jack Frost:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

На жаль, у випадку з цим командлетом спостерігається баг: -Passthru, -Whatif, і -Confirmне працюють. Якщо Ви віддаєте перевагу короткому шляху, спробуйте наступне:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

В результаті мені необхідно, щоб Jack змінив пароль при наступному вході в систему, і я модифікую обліковий запис використовуючи Set-ADUser.

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

Результати виконання командлета не пишуться до консолі. Якщо це потрібно зробити, використовуйте -True. Але я можу дізнатися, чи успішно пройшла операція, зробивши вилучення імені користувача за допомогою командлета Get-ADUserта уточнивши властивість PasswordExpired, як показано малюнку 2.


Мал. 2. Результати роботи командлета Get-ADUser Cmdlet з якістю PasswordExpired

Підсумок: скинути пароль користувача за допомогою PowerShell дуже легко. Зізнаюся, що скинути пароль також просто через оснащення Active Directory Users and Computersконсолі Microsoft Management Console (MMC).Але використання PowerShell підходить у тому випадку, якщо Вам необхідно делегувати завдання, Ви не хочете розгортати вищезгадане оснащення або скидати пароль під час великого автоматизованого ІТ-процесу.

Завдання 2: Активувати та деактивувати облікові записи

А тепер давайте деактивуємо обліковий запис. Продовжимо працювати із Jack Frost. Цей код використовує параметр -WhatifВи можете зустріти в інших комадлетах, які здійснюють зміни, щоб перевірити мою команду не запускаючи її.

PS C:\> Disable-ADAccount jfrost -whatif What if: Performing operation "Set" on Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

А тепер деактивуємо по-справжньому:

PS C:\> Disable-ADAccount jfrost

А коли настане час активувати обліковий запис, який командлет нам допоможе?

PS C:\> Enable-ADAccount jfrost

Ці командлети можуть бути використані в конвеєрному виразі (pipelined expression), дозволяючи активувати або деактивувати стільки облікових записів, скільки душа забажає. Наприклад, цей код деактивує всі облікові записи у відділі продажу (Sales)

PS C:\> get-aduser -filter "department -eq "sales"" | disable-adaccount

Звичайно, писати фільтр для Get-ADUserдосить складно, але саме тут використання параметра -Whatifразом із командлетом Disable-ADAccountприходить на допомогу.

Завдання 3: Розблокувати обліковий запис користувача

Розглянемо ситуацію, коли Jack заблокував свій обліковий запис, намагаючись запровадити новий пароль. Замість того, щоб намагатися знайти обліковий запис через GUI, процедуру розблокування можна здійснити за допомогою простої команди.

PS C:\> Unlock-ADAccount jfrost

Командлет також підтримує параметри -Whatifі -Confirm.

Завдання 4: Видалити обліковий запис

Неважливо, скільки користувачів Ви видаляєте, це просто здійснити за допомогою командлета Remove-ADUser. Мені не хочеться видаляти Jack Frost, але якби я захотів, то використав би такий код:

PS C:\> Remove-ADUser jfrost -whatif What if: Performing operation "Remove" on Target "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Або я можу ввести кілька користувачів та видалити їх за допомогою однієї простої команди:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Remove-ADuser -whatif

За допомогою цієї команди буде знайдено та видалено всі деактивовані облікові записи підрозділу (OU) Employees, які не змінювалися протягом 180 і більше днів.

Завдання 5: Пошук порожніх груп

Управління групами – заняття нескінченне та невдячне. Існує безліч способів знайти порожні групи. Деякі вирази можуть працювати краще за інші, залежно від Вашої організації. Нижче наведений код дозволить знайти всі групи в домені, включаючи вбудовані (built-in).

PS C: get-adgroup -filter * | where (-Not ($_ | get-adgroupmember)) | Select Name

Якщо Ви маєте групи з сотнями членів, тоді використання цієї команди може зайняти багато часу; Get-ADGroupMemberперевіряє кожну групу. Якщо ви можете обмежити або налаштувати, це буде краще.
Ось ще один підхід:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*

Ця команда знаходить всі універсальні групи (Universal groups), які не мають членства в OU Groups і виводить деякі властивості. Результат наведено малюнку 3.


Мал. 3. Пошук та фільтрація універсальних груп

Завдання 6: Додавання користувачів до групи

Давайте додамо Jack Frost до групи Chicago IT:

PS C:\> add-adgroupメンバー "chicago IT" -Members jfrost

Так, все так просто. Ви можете також легко додавати сотні користувачів до груп, хоча, на мій погляд, це трохи незручно:

PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq "Chicago"")

Я використовував вступний конвеєрний вираз (parenthetical pipelined expression), щоб знайти всіх користувачів, які мають властивість City в Chicago. Код у дужках виконується, і отримані об'єкти передаються до –Member. Кожен об'єкт користувача додається до групи Chicago Employees. Неважливо, чи маємо ми справу з 5 або 5000 користувачів, оновлення членства у групах займає лише кілька секунд. Цей вираз може також бути написано з використанням ForEach-Object, Що може бути зручніше:

PS C:\> Get-ADUser -filter "City -eq "Chicago"" | foreach (Add-ADGroupMember "Chicago Employees" -Member $_)

Завдання 7: Виводимо список членів групи

Ви, можливо, захочете дізнатися, хто знаходиться в певній групі. Наприклад, Ви повинні періодично дізнаватися, хто входить до групи доменних адміністраторів (Domain Admins):

PS C:\> Get-ADGroupMember "Domain Admins"

На малюнку 4 наведено результат.


Мал. 4. Члени групи Domain Admins

Командлет виводить об'єкт AD для кожного члена групи. А що робити із вкладеними групами? Мій гурт Chicago All Users є колекцією вкладених груп. Щоб отримати список усіх облікових записів, я лише повинен використовувати параметр -Recursive.

PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName

Якщо Ви хочете піти іншим шляхом – знайти, в яких групах користувач, - використовуйте властивість користувача MemberOf:

PS C:\> get-aduser jfrost -property Memberof | Select -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local

Я використав параметр -ExpandProperty, щоб вивести імена MemberOfяк рядки.

Завдання 8: Знайти застарілі облікові записи комп'ютерів

Мені часто запитують: “Як знайти застарілі облікові записи комп'ютерів?”. І я завжди відповідаю: "А що для вас є застарілим?" Компанії по-різному визначають те, коли обліковий запис комп'ютера (або користувача, неважливо), визнається застарілим і не підлягає подальшому використанню. Щодо мене, то я звертаю увагу на облікові записи, у яких паролі не змінювалися протягом певного періоду часу. Цей період для мене становить 90 днів – якщо комп'ютер не змінив пароль разом із доменом за цей період, швидше за все він знаходиться офлайн і є застарілим. Використовується командлет Get-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Select name,passwordlastset

Фільтр чудово працює з жорстким значенням, але цей код оновлюватиметься для всіх облікових записів комп'ютерів, які не змінили своїх паролів з 1 січня 2012 року. Результати наведено малюнку 5.


Мал. 5. Знаходимо застарілі облікові записи комп'ютерів

Інший варіант: припустимо, ви хоча б на функціональному рівні домену Windows 2003. Поставте фільтр за якістю LastLogontimeStamp. Це значення - число 100 наносекундних інтервалів з 1 січня, 1601 року, і зберігатися в GMT, тому робота з цим значенням трохи складно:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Sort LastLogonTimeStamp


Мал. 6. Конвертуємо значення LastLogonTimeStamp у звичний формат

Щоб створити фільтр, мені необхідно конвертувати дату, наприклад, 1 січня 2012 року, в коректний формат. Конвертація здійснюється в FileTime:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

Тепер я можу використовувати цю змінну у фільтрі для Get-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -property * | Select Name,LastlogonTimestamp,PasswordLastSet

Наведений код знаходить ті ж комп'ютери, що були показані на малюнку 5.

Завдання 9: Деактивувати обліковий запис комп'ютера

Можливо, коли Ви знайдете неактивні або застарілі облікові записи, Ви захочете їх деактувати. Зробити це досить легко. Ми будемо використовувати той самий командлет, що використовували для роботи з обліковими записами користувачів. Ви можете уточнити його, використовуючи samAccountnameоблікового запису.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Performing operation "Set" on Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Або ж використавши конвеєрний вираз:

PS C: get-adcomputer "chi-srv01" | Disable-ADAccount

Я також можу використовувати мій код, щоб знайти застарілі облікові записи і деактивувати їх:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Disable-ADAccount

Завдання 10: Знайти комп'ютери на кшталт

Мені також часто ставлять питання, як знайти облікові записи комп'ютерів на кшталт, наприклад, сервери чи робочі станції. З вашого боку це потребує певної креативності. AD немає нічого такого, щоб відрізняло сервер від клієнта, хіба що ОС. Якщо ваш комп'ютер працює під Windows Server 2008, доведеться трохи зробити кілька додаткових дій.
Для початку необхідно отримати список ОС, а потім здійснюємо фільтрацію облікових записів наявних ОС.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem-unique | Sort OperatingSystem

Результати показані малюнку 7.


Мал. 7. Вилучення списку ОС

Я хочу знайти всі комп'ютери, на яких стоїть серверна ОС:

PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list

Результати наведено малюнку 8.

Як і інші командлети AD Get, Ви можете налаштувати пошукові параметри та обмежити запит окремими OU, якщо це необхідно. Всі вирази, які я показав, можуть бути інтегровані у великі вирази PowerShell. Наприклад, Ви можете сортувати, групувати, застосовувати фільтри, експортувати до CSV або створювати та надсилати на пошту HTML звіти – і все це з PowerShell! При цьому Вам не доведеться писати жодного скрипу.
Ось Вам бонус: звіт про вік пароля користувача (user password-age report), збережений у HTML файлі:

PS C:\> Get-ADUser -Filter "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm !}

Хоча цей вираз може виглядати трохи страшним, при мінімальному знанні PowerShell ним легко скористатися. І залишається лише остання порада: як визначити кастомну властивість під назвою PasswordAge. Значення є проміжком між сьогоднішнім днем ​​і властивістю PasswordLastSet. Потім я сортую результати для нової якості. На малюнку 9 показаний вихід мого невеликого тестового домену.

Upd:
У пості наведено переклад статті на порталі

Ті, кому доводилося мати справу з такими речами, як таблиця Excel, що перераховує 200 нових співробітників, які починають працювати з наступного тижня, або облікові записи користувачів, налаштовані невірно, тому що хтось у службі підтримки клацнув те, чого не слід було клацати, а також ті, кому цікавий простий спосіб керування Active Directory®, крім відкриття папок «Користувачі» та «Комп'ютери» щоразу, можуть скористатися одним із безкоштовних засобів адміністрування. Деякі з них вбудовані прямо в операційну систему Windows, деякі постачаються в пакеті Resource Kit або в наборі засобів підтримки Windows, а деякі є безкоштовною продукцією сторонніх виробників. Що це за зручні кошти та де їх можна дістати? Давайте з'ясуємо.
Почнемо з вбудованих засобів командного рядка у Windows Server 2003, які дозволяють створювати, видаляти, модифікувати та шукати об'єкти в Active Directory.

Засіб CSVDE дозволяє імпортувати нові об'єкти в Active Directory, використовуючи вихідний файл CSV; воно також дозволяє експортувати існуючі об'єкти у файл CSV. CSVDE не можна використовувати для зміни наявних об'єктів; під час використання цього кошти у режимі імпорту можна лише створювати нові об'єкти.

Експорт списку існуючих об'єктів за допомогою CSVDE є досить простим. Нижче показано, як експортувати об'єкти Active Directory у файл під назвою ad.csv:

csvde –f ad.csv

Параметр –f вказує, що його слідує ім'я вихідного файла. Але слід розуміти, що, залежно від середовища, цей базовий синтаксис може призвести до виведення величезного файлу. Щоб обмежити засіб експортом лише об'єктів усередині певного структурного підрозділу (OU), команду можна змінити так:

csvde –f UsersOU.csv –d ou=Users,dc=contoso,dc=com

Припустимо, що мені потрібно експортувати лише об'єкти користувача в мій файл CSV. У такому випадку можна додати параметр –r, що дозволяє вказати фільтр протоколу LDAP для даного пошуку, який обмежить кількість атрибутів, що експортуються (зауважте, що все нижченаведене є одним рядком):

csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r
"(&(objectcategory=person)(objectclass=user))" -l
DN,objectClass,description

Параметр –i дозволяє імпортувати об'єкти в Active Directory із вихідного файлу CSV. Однак створення об'єктів користувача за допомогою CSVDE має один важливий недолік: за допомогою цього засобу не можна встановлювати паролі користувачів, тому я не стала б використовувати CSVDE для створення об'єктів користувачів.

Active Directory надає другий вбудований засіб для пакетних операцій користувачів, що називається LDIFDE і має більш широкі та гнучкі можливості, ніж CSVDE. Крім створення нових об'єктів, LDIFDE дозволяє модифікувати та видаляти існуючі об'єкти та навіть розширювати схему Active Directory. Платою за гнучкість LDIFDE є те, що необхідний вхідний файл (файл LDIF) з розширенням.ldf використовує складніший формат, ніж простий CSV файл. (Трохи попрацювавши, можна також налаштовувати паролі користувачів, але про це трохи пізніше.)

Почнемо з простого прикладу - експорту користувачів у структурному підрозділі у файл LDF (зазначте, що все нижченаведене є одним рядком):

ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
-r "(&(objectcategory=person)(objectclass=user))"

Як і у більшості засобів командного рядка, повний опис параметрів LDIFDE можна отримати, запустивши команду LDIFDE /? . показані ті, що я використала тут. (Зверніть увагу, що параметри для команд CSVDE та LDIFDE однакові.)

По-справжньому можливості LDIFDE розкриваються при створенні об'єктів та керуванні ними. Однак перед цим необхідно створити вхідний файл. Нижченаведений код створює два нових облікових записи користувача - afuller і rking; Щоб створити вхідний файл, введіть текст у блокноті (або іншому редакторі відкритого тексту) і збережіть його як NewUsers.ldf:

dn: CN=afuller, OU=UsersOU, DC=contoso, DC=com
changetype: add
cn: afuller
objectClass: user
samAccountName: afuller dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: add
cn: rking
objectClass: user
samAccountName: rking

Після завершення створення файлу запустіть наступну команду:

ldifde –i –f NewUsers.ldf –s DC1.contoso.com

Єдиний новий параметр тут - це -i, який, як неважко здогадатися, показує, що виконується операція імпорту, а чи не експорту.

При зміні або видаленні існуючих об'єктів синтаксис команди LDIFDE не змінюється; замість цього змінюється вміст файлу LDF. Для зміни поля опису облікових записів користувачів створіть текстовий файл, який називається ModifyUsers.ldf, як показано на Мал. 2.


Мал. 2 Файл LDF ModifyUsers

Зміни імпортуються шляхом запуску того ж синтаксису команди LDIFDE, що й раніше, із зазначенням нового файлу LDF після параметри -f. Формат LDF для видалення об'єктів ще простіше; Щоб видалити користувачів, з якими ви працювали, створіть файл, який називається DeleteUsers.ldf, і введіть наступне:

dn: CN=afuller OU=UsersOU, DC=contoso, DC=com
changetype: delete dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: delete

Зауважте, що на відміну від CSVDE, LDIFDE може настроювати паролі користувачів. Однак перед налаштуванням атрибуту unicodePWD для облікового запису користувача необхідно налаштувати шифрування SSL/TLS на контролерах домену. До того ж, LDIFDE може створювати та модифікувати будь-які об'єкти Active Directory, а не лише облікові записи користувачів. Наприклад, нижченаведений файл LDF створить нове розширення схеми, іменоване EmployeeID-example, у схемі лісу contoso.com:
dn: cn=EmployeeID-example,cn=Schema,
cn=Configuration,dc=contoso,dc=com
changetype: add
adminDisplayName: EmployeeID-Example
attributeID: 1.2.3.4.5.6.6.6.7
attributeSyntax: 2.5.5.6
cn: Employee-ID
instanceType: 4
isSingleValued: True
lDAPDisplayName: employeeID-example

Оскільки у файлах LDIFDE використовується стандартний галузевий формат файлу LDAP, програми від сторонніх виробників, яким необхідно модифікувати схему Active Directory, часто постачають файли LDF, за допомогою яких можна вивчити та схвалити зміни, перш ніж застосовувати їх до виробничого середовища.

Крім засобів для пакетного імпорту та експорту, до складу Windows Server 2003 входить вбудований набір коштів, що дозволяє створювати, видаляти та змінювати різні об'єкти Active Directory, а також виконувати запити до об'єктів, що відповідають певним критеріям. (Слід зазначити, що ці засоби, dsadd, dsrm, dsget, and dsquery, не підтримуються Active Directory у Windows 2000.)

Dsadd використовується для створення екземпляра класу об'єктів Active Directory у певному розділі каталогу. До даних класів входять «користувачі», «комп'ютери», «контакти», «групи», «структурні підрозділи» та «квоти». Зауважу, що кожен тип об'єктів, що створюється, потребує особливого набору параметрів, що стосуються атрибутів, доступних для цього типу. Ця команда створює один об'єкт користувача з різними заповненими атрибутами (зазначте, що все нижченаведене є одним рядком):

dsadd user cn=afuller,ou=IT,dc=contoso,dc=com
-samID afuller -fn Andrew -ln Fuller -pwd *
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com"
-desc "Marketing Director"
Параметр -memberOf вимагає повного різного імені (DN) кожної групи, до якої слід додати користувача, якщо його потрібно додати до декількох груп, можна додати кілька DN, розділених пробілами. Якщо елемент, скажімо DN групи «Служба підтримки», містить пробіл, цей елемент треба помістити у подвійні лапки. Якщо елемент, скажімо структурний підрозділ ITEMEA, містить зворотну косу рису, цю рису потрібно ввести двічі: ITEMEA. (Ці вимоги стосуються всіх засобів ds*.)При використанні параметра -pwd * настане запит на введення пароля для користувача в командному рядку. Пароль можна вказати всередині самої команди (-pwd P@ssword1), але тоді він буде відображений відкритим текстом на екрані або в будь-якому текстовому файлі або сценарій, в який вставлена ​​команда.

Аналогічно, можна створити об'єкт групи та структурний підрозділ за допомогою наступних двох команд:

dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"

Dsmod використовується для зміни існуючих об'єктів, а працюють з ним майже так само, як з dsadd, використовуючи різні підменю та синтаксис, що залежать від типу об'єкта, що змінюється. Нижченаведена команда dsmod змінює пароль користувача та модифікує його обліковий запис так, щоб при наступному вході в систему йому було видано запит на зміну пароля:

dsmod user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd yes

Щоб побачити, наскільки схожі ці параметри, погляньте на синтаксис dsadd, який використовується для створення користувача з тими ж налаштованими атрибутами:

dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd yes

Очевидно, що, знаючи параметри для створення об'єктів за допомогою dsadd, можна використовувати їх для зміни користувачів за допомогою dsmod.

Протилежністю dsadd є dsrm; як нескладно уявити, цей засіб використовується для видалення об'єктів із командного рядка. Базовий синтаксис dsrm досить прямолінійний: просто введіть dsrm, а за ним - ім'я об'єкта, що відрізняється, що слід видалити, приблизно так:

dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com

За промовчанням dsrm видасть запит «Ви дійсно хочете видалити цей об'єкт?». Введіть Y та натисніть Enter. Цей запит можна вимкнути за допомогою параметра -noprompt, але, очевидно, що в такому випадку зникне шанс підтвердити перед видаленням, що об'єкт вибрано правильно. Два додаткові параметри можуть бути корисними при видаленні об'єкта-контейнера, тобто структурного підрозділу, що потенційно може містити інші об'єкти. Наступна команда видаляє структурний підрозділ TrainingOU і всі об'єкти, що містяться в ньому:

А ця видаляє всі дочірні об'єкти в TrainingOU, але не чіпає сам структурний підрозділ:

dsrm ou=TrainingOU,dc=contoso,dc=com –subtree
-exclude

Для переміщення або перейменування об'єкта в Active Directory використовується засіб dsmove, але слід зазначити, що його можна використовувати лише для переміщення об'єктів усередині домену. Для перенесення об'єктів між доменами або лісами використовуйте засіб перенесення Active Directory Migration Tool (ADMT), який безкоштовно завантажується з веб-сайту Майкрософт. Dsmove покладається на два параметри, які можна використовувати окремо або разом. Ця команда змінює прізвище в обліковому записі користувача Steve Conn:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com"
-newname "Steve Conn"

Ця команда переміщає обліковий запис Steve із структурного підрозділу IT до підрозділу Training:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" -newparent
ou=Training,dc=contoso,dc=com

Перейменування та перенесення можна зробити в рамках однієї операції, вказавши обидва параметри разом:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname
"Steve Conn" - Newparent ou = Training, dc = contoso, dc = com

Dsget та Dsquery

До складу набору командного рядка ds* також входять два засоби, які використовуються для запитів інформації Active Directory, а не для створення або зміни об'єктів.

Dsget отримує на вході ім'я (DN), що розрізняється, і видає значення зазначеного атрибута або атрибутів. Dsget використовує ті ж підменю, що dsadd і dsmod - "користувач", "комп'ютер", "контакт", "група", "структурний підрозділ" та "квота".

Щоб отримати ім'я облікового запису SAM та код безпеки (SID) облікового запису користувача, введіть наступну команду (позначте, що все нижченаведене є одним рядком):

dsget user cn=afuller,ou=IT,dc=contoso,dc=com
–samAccountName –sid

Результати будуть подібні до показаних на Рис. 3.

Мал. 3 Робота dsget

Dsquery повертає список об'єктів Active Directory, які відповідають зазначеним критеріям.

Dsquery може використовувати наступні підменю, кожне зі своїм синтаксисом, для ObjectType: "комп'ютер", "контакт", "підмережа", "група", "структурний підрозділ", "веб-вузол", "сервер" (слід зазначити, що підменю сервера отримує дані про контролерів домену, а не про сервери у вашому середовищі), «користувач», «квота» і «розділ». А якщо один із цих типів запитів не є тим, чим потрібно, можна використовувати підменю *, що дозволяє ввести запит LDAP вільної форми. StartNode вказує місцезнаходження дерева Active Directory, в якому розпочнеться пошук. Можна використовувати конкретне DN, таке як ou=IT,dc=contoso,dc=com, або один з наступних описників короткого шляху: domainroot, що починається з кореня певного домену, або forestroot, що починається з кореневого домену лісу, використовуючи сервер глобального каталогу для виконання пошуку.Нарешті, параметр області пошуку вказує, як засіб dsquery має здійснювати пошук у дереві Active Directory. Опитування піддерева (варіант за замовчуванням) звертаються до вказаного StartNode та всіх його дочірніх об'єктів, однорівневі опитування звертаються тільки до безпосередніх дочірніх об'єктів StartNode, і базові опитування звертаються тільки до об'єкта StartNode. Для кращого розуміння областей пошуку уявіть структурний підрозділ (OU), об'єкти користувача, так і дочірнє OU, яке також містить додаткові об'єкти. При використанні піддерева як область буде запитано OU, всі об'єкти користувача всередині нього, дочірнє OU і його вміст. При однорівневій області буде запитано лише користувачі, які містять OU, але не дочірнє OU та його вміст. При базовому запиті буде запитано тільки саме OU без запиту об'єктів, що містяться в ній. Нарешті, можна використовувати вихідний формат, щоб контролювати форматування результатів dsquery. За замовчуванням dsquery повертає різні імена всіх об'єктів, що збігаються із запитом, приблизно так:

"cn=afuller,ou=Training,dc=contoso,dc=com"
"cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com" Щоб запросити всі об'єкти користувачів, які містяться в структурному підрозділі IT та його дочірніх OU, використовуйте таке:

dsquery user ou=IT,dc=contoso,dc=com

Запит можна зробити ще більш точним, додаючи додаткові параметри, такі як -disabled, що повертає лише вимкнені облікові записи користувачів; -inactive x, який повертає тільки користувачів, які не підключалися протягом x або більше тижнів; або -stalepwd x, який повертає лише користувачів, які не змінювали свої паролі протягом x або більше днів.

Залежно від кількості об'єктів у каталозі може виникнути потреба вказати параметр -limit x під час запуску запиту. За промовчанням dsquery повертає до 100 об'єктів, що збігаються з параметрами запиту; але можна вказати і більше, таке як -limit 500, або використовувати -limit 0, щоб dsquery повернуло всі збігаються об'єкти.

Також можна використовувати інші підменю для виконання корисних запитів інших типів об'єктів. Розглянемо наступний запит, який повертає кожну підмережу, визначену в «Active Directory - вузли та служби», і входить до місця адрес 10.1.x.x:

dsquery subnet -name 10.1. *

А наступну команду можна використовувати для повернення кожної підмережі, що знаходиться на веб-сайті Corp:

dsquery subnet -site Corp

За допомогою чергового підменю можна швидко визначити скільки контролерів домену в лісі налаштовано для роботи серверами глобального каталогу:

dsquery server –forest –isgc

Можна також використовувати цей синтаксис, щоб спростити визначення контролера домену в певному домені, що містить роль FSMO емулятора основного контролера домену (PDC):

dsquery server –hasfsmo pdc

Як і у випадку з іншими командами ds*, що включають підменю, всі параметри, доступні в конкретному підменю dsquery, можна переглянути, увійшовши до командний рядокі ввівши dsquery user /?, dsquery computer /?, dsquery subnet /?, і так далі.

Додатковим хитрим прийомом є передача вихідних даних dsquery конвеєру в інший засіб, таке як dsmod, за допомогою знака | (SHIFT+зворотна коса характеристика при англійській розкладці клавіатури). Наприклад, компанія перейменувала відділ з «Підготовка» у «Внутрішній розвиток», і тепер потрібно оновити поле опису кожного користувача, який належить до цього відділу. Одним командним рядком можна запросити всі об'єкти користувачів, які мають поле опису «Підготовка», а потім замінити це поле опису для всього пакета таким чином:

dsquery user –description "Training" | dsmod
-description "Internal Development"

Деякі знахідки від сторонніх виробників

Оскільки Active Directory базується на стандартах LDAP, в ній можна створювати запити та вносити зміни за допомогою будь-якого інструменту, який розуміє LDAP. Багато сторонніх постачальників випустили платні кошти для допомоги в адмініструванні Active Directory, але часом можна знайти і справжні скарби, які поширюються безкоштовно. Це, зокрема, можна сказати про колекцію, створену власником звання MVP за службами каталогів Джо Річардсом (Joe Richards) та доступною для завантаження на joeware.net/freetools. У ньому можна знайти численні кошти, службовці на вирішення різних завдань. До трьох з них я повертаюся постійно - це adfind, admod та oldcmp.

Adfind та Admod

Adfind і admod подібні до dsquery і dsmod; adfind є засобом запиту за допомогою командного рядка Active Directory, а admod може створювати, видаляти чи змінювати об'єкти Active Directory.

На відміну від засобів ds*, що мають кілька підменю та різні параметри в залежності від типу об'єкта, adfind і admod користуються єдиним синтаксисом незалежно від типу запиту або зміни, що виконується. Базовий синтаксис для adfind:

adfind -b -s -f
attributesDesired

Запит імені та опису всіх об'єктів комп'ютерів у домені буде виглядати як:

adfind -b dc = contoso, dc = com -s subtree -f (objectclass = computer) dn
description

Запит усіх об'єктів користувачів буде виглядати як:

adfind -b dc = contoso, dc = com -s subtree -f "(&(objectcategory=person)
(objectclass=user))" dn description

Зауважте, що за винятком запиту на вміст LDAP синтаксис не змінювався.

Працюючи з adfind, можна знайти кілька скорочених варіантів запису параметрів, які позбавляють зайвої роботи із введення. Наприклад, параметр -default може замінити -b dc=contoso,dc=com у попередньому прикладі та здійснити пошук по всьому домену; -gc шукає, ґрунтуючись на складання сміття (GC), та повертає всіх користувачів у вашому лісі Active Directory. Параметр -rb можна також використовувати для встановлення відносної бази для пошуку; якщо, скажімо, необхідно знайти структурний підрозділ «Підготовка» в домені phl.east.us.contoso.com, то можна помітно заощадити час, просто вказавши –default –rb ou=Training замість –b ou=Training, dc=phl, dc = east, dc = us, dc = contoso, dc = com.

Adfind також може виконувати ряд функцій розширеного пошуку, якими складно керувати без командного рядка.

Приклад, який використовує параметр -asq, буде запитувати "Покажи мені членство в групах членів HelpDesk" таким чином:

adfind -default -rb cn = HelpDesk,ou = IT -asq member memberOf

Admod, як випливає з назви програми, використовується для зміни об'єктів у Active Directory. Як і у випадку adfind, у ньому немає спеціалізованих підменю зі своїми синтаксисами, які треба запам'ятовувати; admod використовує той самий синтаксис незалежно від типу об'єкта, що обробляється. Admod також можна використовувати для додавання, переміщення, перейменування видалення і навіть відновлення об'єктів шляхом простого додавання відповідного параметра, наприклад -add, -rm, -move, -undel. І так само, як у dsquery і dsmod, знак | можна використовувати передачі даних запиту adfind по конвеєру в admod.

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

Є ще один засіб з колекції програм Джо, який я вважаю незамінною частиною свого набору засобів автоматизації: oldcmp, що шукає в базі даних Active Directory облікові дані комп'ютерів, які не використовувалися протягом зазначеної кількості тижнів і здатні проводити наступні дії:

  • створювати звіти про облікові записи без будь-яких дій щодо них;
  • вимикати облікові записи комп'ютерів, що не використовуються;
  • переміщати облікові записи комп'ютерів до іншого, заздалегідь вказаного структурного підрозділу;
  • повністю видаляти облікові записи комп'ютерів.

Зазначу, що оскільки oldcmp може влаштувати серйозний розгром у каталозі, він має кілька вбудованих функцій безпеки. Він не видаляє облікові записи, які не були відключені раніше (якщо у командному рядку ви не сказали: "Ні, я дійсно хочу це зробити!"). Він не змінює більше 10 об'єктів за раз (якщо, знову ж таки, зворотне не вказано особливо), і він ніколи не буде нічого робити з обліковим записом комп'ютера контролера домену.

На даний момент Джо оновив oldcmp, тому він може виконувати подібні функції також і на облікових записах користувачів, які не використовувалися протягом зазначеного відрізка часу.

Для невеликого середовища Active Directory або середовища, де робота йде лише з одним-двома доповненнями або змінами за раз, засобів з графічним інтерфейсом, таких як Active Directory - користувачі та комп'ютери, може бути достатньо для повсякденного адміністрування, але при необхідності щодня додавати або змінювати велику кількість об'єктів або простого бажання знайти більш раціональне рішення для завдань адміністрування перехід на командний рядок може набагато прискорити процес створення, зміни та видалення об'єктів у Active Directory. Як було показано вище, існує набір гнучких і потужних безкоштовних засобів - як вбудованих у Windows, так і членів спільноти Active Directory, що розповсюджуються. Будь-яке з них здатне набагато підвищити продуктивність роботи адміністратора Active Directory, разом вони стають ще важливішими для його повсякденної роботи.

Лора Хантер (Laura E. Hunter) є чотириразовим лауреатом премії Microsoft MVP у сфері засобів для роботи з мережею Windows Server. Вона є автором другого видання «Довідкового керівництва з Active Directory» (вид-во O"Reilly, 2006). Маючи десять років стажу в галузі ІТ, Лора працює зараз проектувальником Active Directory в інженерно-технічній фірмі світового рівня. Вона також є володаркою кількох галузевих. сертифікатів, а також часто виступає на зустрічах груп користувачів та галузевих конференціях.