Донецкий техникум промышленной автоматики

Як швидко додати користувачів в групи AD [скрипт]

Сьогодні покажу вам, як можна дуже швидко додати купу користувачів в групи 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 в серверних винда, і краще заздалегідь до цього підготуватися.

А якщо буде кілька десятків користувачів і стільки ж груп, куди потрібно всіх розкидати?