Автоматизуємо створення облікових записів за допомогою PowerShell.
В найпростішому варіанті створення нового облікового запису користувача займає приблизно пару хвилин. Відкриваємо оснащення «Active Directory - Users and Computers», заходимо в потрібний підрозділ (OU), в меню вибираємо Створити - Користувач, вводимо ім'я користувача та пароль. Все, учетка готова, можна працювати.
А тепер уявіть, що таким чином вам треба створити не одну, а скажімо 50 облікових записів, і робити це регулярно.
Оскільки наврядчи комусь подобається проводити час, тупо набираючи облікові дані користувачів, то робимо простий висновок - процес закладу користувачів треба автоматизувати.І допоможе нам в цьому PowerShell.
Отже, уявімо, що нам потрібно терміново створити 50 однотипних облікових записів. Пишемо ось такий скрипт:
$ org = "OU = Students, DC = contoso, DC = com"
$ username = "student"
$ count = 1..50
foreach ($ i in $ count)
{New-AdUser -Name $ username $ i -Path $ org -passThru}
Запускаємо скрипт, і в підрозділі Students створюється 50 користувачів з іменами student1-student50.За замовчуванням учеткі створюються відключеними, і користувачі все одно будуть змушені до вас звертатися для їх активації. Спробуємо цього уникнути:
$ org = "OU = Students, DC = contoso, DC = com"
$ username = "student"
$ count = 1..50
foreach ($ i in $ count)
{New-AdUser -Name $ username $ i -Path $ org -Enabled $ True -ChangePasswordAtLogon $ true `
-AccountPassword (ConvertTo-SecureString« p @ $$ w0rd »-AsPlainText -force) -passThru}
Тут створюємо облікові записи вже більш культурними та задаємо p @ $$ w0rd як пароль за замовчуванням, а також вказуємо змінити його при першому вході в систему.Щоб не передавати пароль у відкритому вигляді, використовуємо командлет ConvertTo-SecureString, який переводить текстовий рядок в захищений формат
Тепер зробимо наш скрипт трохи більш гнучким. Використовуючи командлет Read-Host змусимо наш скрипт запитувати ім'я і кількість користувачів:
$ org = "OU = Students, DC = contoso, DC = com"
$ username = Read-Host "Enter name "
$ number = Read-Host" Enter number "
$ count = 1.. $ Number
foreach ($ i in $ count)
{New-AdUser -Name $ username $ i -Path $ org -Enabled $ True -ChangePasswordAtLogon $ true `
-AccountPassword (ConvertTo -SecureString "p @ $$ w0rd" -AsPlainText -force) -passThru}
Облікові записи створені, користувачі можуть заходити в систему і працювати. Тепер їх треба налаштувати - додати в групи безпеки, прописати домашній каталог, сценарії входу і т.п. Зробити це можна за допомогою шаблону. Простіше кажучи, створюємо шаблонну обліковий запис, повністю налаштовуємо її, а потім робимо з неї потрібну кількість копій за допомогою параметра -Instance:
$ template = Get-AdUser -Identity "student"
$ org = "OU = Students, DC = contoso, DC = com"
$ username = Read-Host "Enter name"
$ number = Read-Host "Enter number"
$ count = 1 .. $ Number
foreach ($ i in $ count)
{New-AdUser -Name $ username $ i -UserPrincipalName $ username $ i -Path $ org -Instance `
$ template -Enabled $ True -ChangePasswordAtLogon $ true `
-AccountPassword (ConvertTo-SecureString" p @ $$ w0rd "-AsPlainText -force) -passThru}
Ще один спосіб автоматизувати створення облікових записів - імпортувати їх з CSV-файлу. Цей спосіб підійде в тому випадку, якщо вам надали список користувачів, і їм треба завести облікові записи відповідно до цього списком.Як правило, подібні списки створюються в Excel у вигляді таблиці зі стовпцями Ім'я, Посада, Відділ і т.п., приблизно такого вигляду:
Наше завдання - зберегти його в форматі CSV і потім вказати в скрипті за допомогою командлета Import-CSV. Якщо ваш CSV-файл містить всі необхідні стовпці, то New-ADUser автоматично зв'яже їх з правильними атрибутами користувача:
$ csv = Import-CSV -Path "C: \ scripts \ users.csv "
$ csv | New-AdUser -Path $ org -Enabled $ True -ChangePasswordAtLogon $ true `
-AccountPassword (ConvertTo-SecureString" p @ $$ w0rd "-AsPlainText -force) -passThru
Таким чином можна імпортувати сотні нових користувачів за кілька секунд, але є в цьому методі і підводні камені:
- Назви стовпців повинні повністю збігатися з назвами атрибутів користувача, наприклад Name (Ім'я), Organization (Організація), Title (посаду), інакше нічого не вийде.Повний список атрибутів можна подивитися тут.
- У таблиці обов'язково потрібно вказати SamAccountName, в іншому випадку буде видана помилка про те, що обліковий запис вже існує.
- Якщо атрибути задаватьть в російській розкладці, як в нашому прикладі, то можуть виникнути проблеми з кодуванням.У вирішенні цієї проблеми мені допомогло витяг содержімго CSV-файлу за допомогою командлета Get-Content і збереження його в інший CSV-файл: Get-Content users.csv >> users1.csv. Після цього всі російськомовні атрибути стали відображатися нормально.
На закінчення кілька важливих моментів:
Для запуску командлета New-ADUser необхідно попередньо імпортувати модуль Active Directory для PowerShell.Робиться це командою Import-Module ActiveDirectory, можна просто вставити цей рядок в скрипт. Виняток становить випадок, коли ви запускаєте скрипт з спеціального оснащення «Модуль Active Directory для Windows PowerShell».
Модуль ActiveDirectory доступний на серверах під управлінням Windows Server 2008R2/2012, а також на робочих станціях Windows 7/8 c встановленим пакетом адміністрування RSAT.
Для роботи модуля ActiveDirectory необхідна веб-служба Active Directory (ADWS), що надає веб-інтерфейс для доступу до служби каталогів. За замовчуванням ця служба встановлюється автоматично при додаванні ролей сервера AD DS і AD LDS на серверах під управлінням Windows Server 2008R2 і вище. Для Windows Server 2003 \ 2008 рік цю службу можна встановити окремо, скачавши звідси.П>.