Сьогодні покажу вам, як можна дуже швидко додати купу користувачів в групи Active Directory, за допомогою простенького скрипта PowerShell.
Відразу покажу скрипт, щоб не мучити.
$ ErrorActionPreference = 'Continue' $ error.Clear () $ i = 0 import-module activedirectory $ pathToCSV = '. \ Users.csv' $ csv = Import-Csv -path $ pathToCSV -Delimiter ';' foreach ($ group in $ csv) {$ uname = "$ ($ group.Username)". split ( '\') [1] $ groupname = "$ ($ group.Groupname)" Add-ADGroupMember -Identity $ groupname -Members $ uname $ i ++} if ($ error.Count -gt 0) {echo "Errors count:" $ error.Count} $ success = $ ($ i- $ error.Count) if ($ success -gt -1 ) {echo "Success records count:" $ success}
Як, напевно, відсотків 80 адмінів додають користувачів? Правильно - за допомогою оснастки користувачі і комп'ютери.
ОК, якщо так потрібно додати одного-двох в пару груп, в принципі можна і так, але от якщо користувачів більше - то це вже вкрай неефективно.
Тут може допомогти команда з модуля activedirectory для powershell:
Add-ADGroupMember -Identity ІмяГруппи -Members ім'я користувача
приклад:
Add-ADGroupMember -Identity test1 -Members sanglyb
Ось, так вже на багато швидше і ефективніше, але все одно ... А якщо буде кілька десятків користувачів і стільки ж груп, куди потрібно всіх розкидати? Те ж замучить набирати цю команду. Крім того, коли набираєш купу однотипних команд вкрай велика ймовірність, де то помилитися. І тут нам на допомогу приходить скрипт.
Всі версії PowerShell вміють аналізувати довільні CSV файли, принаймні починаючи з версії 2, ніж ми і скористаємося, створимо файл users.csv з приблизно таким змістом:
Username; Groupname
sanglyb; test1
sanglyb; test2
sanglyb; test3
відповідно перший стовпець - ім'я користувача, другий - група куди цього користувача потрібно додати.
Кидаємо файл в папку зі скриптом, виконуємо скрипт з комп'ютера, який знаходиться в домені, від імені користувача, який має право додавати користувачів в потрібні групи. Готово.
Тим самим можна заощадити купу часу і головне уникнути помилок при додаванні.
Трохи розберемо скрипт.
$ ErrorActionPreference = 'Continue'
У першому рядку - ми вказуємо, що, якщо буде помилка, що б скрипт продовжив виконуватися, пропустивши помилку.
$ Error.Clear ()
Далі відчищаємо минулі помилки.
import-module activedirectory
Імпортуємо модуль activedirectory, що б PowerShell дізнався про заповітну команді.
$ PathToCSV = '. \ Users.csv' $ csv = Import-Csv -path $ pathToCSV -Delimiter ';'
Вказуємо шлях до CSV файлу і імпортуємо його.
foreach ($ group in $ csv) {$ uname = "$ ($ group.Username)". split ( '\') [1] $ groupname = "$ ($ group.Groupname)" Add-ADGroupMember -Identity $ groupname -Members $ uname $ i ++}
Проходимся по кожному рядку у файлі: заносимо в змінні ім'я користувача і групу, куди його потрібно додати. Додаємо користувача в групу.
Виключно з метою естетики
if ($ error.Count -gt 0) {echo "Errors count:" $ error.Count}
Дивимося на кількість помилок, і виводимо цю кількість.
$ Success = $ ($ i- $ error.Count) if ($ success -gt -1) {echo "Success records count:" $ success}
Дивимося на кількість успішних виконань і виводимо цю кількість.
Так, скрипт не оптимiзований, і його можна дуже добре поліпшити, наприклад вибирати групу, шукати всіх користувачів, кого потрібно в цю групу додати, і додавати однією командою всіх користувачів в потрібну групу, але у мене не було часу цим займатися, скрипт знадобився терміново , з цього був написаний дуже швидко, на коліні. Але тим не менш, він цілком робочий.
І на останок, хочу сказати - вчіть PowerShell, навіть якщо ви працюєте в дуже маленькій організації і у вас немає необхідності щось автоматизувати.
Справа в тому, що Microsoft вже почала активні і дуже агресивні дії щодо позбавлення від GUI в серверних ОС. Наприклад, Windows Server 2016 1709, яка зараз доступна тільки корпоративним клієнтам по VL каналах, вже позбавлена можливості установки ОС з Desktop Experience, і включити цю фічу після установки не можна (мова звичайно про чисту, новій установці). Тільки Core, тільки хардкор. Так що, так чи інакше, рано чи пізно доведеться відмовитися від використання GUI в серверних винда, і краще заздалегідь до цього підготуватися.
А якщо буде кілька десятків користувачів і стільки ж груп, куди потрібно всіх розкидати?