Переміщення користувачів зі списку в потрібну ou

Всім доброго часу доби.

Почав переміщати користувачів до відповідних OU. Після 15-го користувача зрозумів, що процес затягнеться надовго, та ще й відволікають по іншим «невідкладних справах» 🙂. Вирішив автоматизувати роботу з допомогою скрипта. Скрипт вирішив писати на PowerShell'е. Він має всі необхідні командлетти для роботи з об'єктами AD. Досвід роботи з командлеттамі був, наприклад тут і тут.

Вихідні дані були як файл Excel, де знаходилося штатний розклад компанії, люб'язно надане відділом кадрів. За допомогою фільтрів Excel, вибирав співробітників підрозділу. Цей список копіював на окремий лист. Виходив стовпець з прізвищами. Стовпець називався displayname.

Переміщення користувачів зі списку в потрібну ou

Після цього даний лист зберігався, при збереженні «Тип файлу» вибирався «Текст Юнікод (* .txt)»

При спробі імпортувати цей файл, я виявив, що російські символи імпортуються з файлу в вигляді знаків питань. Та й в консолі при російській розкладці вводилися знаки питань. Вирішення цього питання знайшлося в інтернеті. Необхідно змінити кодову розкладку консолі командою chcp одна тисяча двісті п'ятьдесят одна і змінити шрифт на Lucida Console.

Переміщення користувачів зі списку в потрібну ou

Після цих дій все чудово запрацювало.

Отже готовий файл зі списком прізвищ потрібного підрозділу містився в директорію Scripts на диску C: \. Файл usermove.txt

Отже нижче власне сам скрипт:


# Підключаємо модуль Powershell для роботи з AD
Import-Module ActiveDirectory -ErrorAction SilentlyContinue

# Міняємо кодову сторінку, поміняти досить 1 раз
chcp тисячу двісті п'ятьдесят одна

# OU Куди переносимо користувачів
$ TargetOU = «OU = Подразделеніе_1, OU = Департамент_1, OU = CompanyName_Users, DC = office, DC = local»

#OU Звідки беремо користувачів
$ SourceOU = "OU = CompanyName_Users, DC = office, DC = local»

# Присвоюються шлях до файлу з ПІБ потрібних користувачів
$ Impfile = "C: \ Scripts \ usermove.txt»

# Створюємо масив $ users і завантажуємо в нього користувачів
$ Users = Import-CSV $ impFile

# Запускаємо цикл і обробляємо кожен рядок масиву.
foreach ($ user in $ users)
# Надаємо змінної $ dplname значення рядка з шпальти displayname масиву $ users
$ Dplname = $ user.displayname

# У масив $ usermove заносимо атрибути користувача, чиє коротке ім'я (атрибут name) зараз в змінній $ dplname.
# Пошук відбувається в OU, що містить ім'я занесене в змінну $ sourceOU. Глибина пошуку (задається параметром -SearchScope OneLevel) тільки поточна OU, все нижчестоящі OU не проглядається.

$ Usermove = get-aduser -f -SearchBase $ sourceOU -SearchScope OneLevel

# Роздруковуємо для перевірки змінні
write-host «Користувач $ dplname»
write-host
write-host «Перенесення $ usermove.distinguishedname»
write-host

# Перенесення користувача в потрібну OU
Move-ADObject -Identity $ usermove.distinguishedname -TargetPath $ targetOU
>

# Виводжу на екран для перевірки куди перемістити користувачів.
$ targetOU

Ось власне і все. У планах заповнення атрибутів користувачів таких як:

Схожі статті