Найпростіший спосіб створити нового користувача в домені Active Directory - скористатися графічної mmc оснащенням ADUC (Active Directory Users and Computers). Але в тому випадку, якщо в домені потрібно завести відразу кілька облікових записів, їх створення в ручному режимі може стати досить стомлюючої для адміністратора процедурою. У цій статті ми розглянемо приклад автоматизації створення облікових записів користувачів в AD за допомогою командлета PowerShell New-ADUser.
зміст:
- Використовуємо командлет New-ADUser для створення нового облікового запису AD
- Масове виробництво нових користувачів в AD з CSV скриптом PowerShell
Використовуємо командлет New-ADUser для створення нового облікового запису AD
командлет New-ADUser входить до складу модуля Active Directory для PowerShell. Для використання цього модуля, потрібно встановити на комп'ютері відповідну ОС версію RSAT і включити компонент Active Directory Module for Windows PowerShell.
Для імпорту модуля в сесію PowerShell виконайте команду:
Import-Module activedirectory
Повний синтаксис командлет New-ADUser можна отримати за допомогою команди
Get-Command New-ADUser -Syntax
В мінімальної версії для створення нового облікового запису користувача в AD досить вказати тільки його ім'я.New-ADUser testuser1
Як ви бачите, новий обліковий запис користувача створилася в контейнері Users і є відключеною. Для використання цього облікового запису, її потрібно включити (командлет Enable-ADAccount), задати пароль (командлет Set-ADAccountPassword) і / або інші атрибути (за потребою).
Щоб створити повноцінну працездатну обліковий запис в певному контейнері (OU) домену з паролем і відразу активувати її, скористайтеся такою командою.
New-ADUser -Name "Test User2" -GivenName "Test" -Surname "User2" -SamAccountName "testuser2" -UserPrincipalName "[email protected]" -Path "OU = Users, OU = Accounts, OU = SPB, DC = winitpro, DC = loc "-AccountPassword (Read-Host -AsSecureString" Input Password ") -Enabled $ true
Команда запропонує відразу вказати пароль нового користувача (в захищеному вигляді)
Примітка. Пароль користувача повинен відповідати доменним політикам безпеки паролів по довжині, складності і т.д., в іншому випадку командлет поверне помилку: New-ADUser: The password does not meet the length, complexity, or history requirement of the domain. Ви можете використовувати готовий скрипт PowerShell для створення унікального пароля для кожного користувача .Інформацію про створеному користувача домену можна отримати за допомогою командлета Get-ADUser:
Get-ADUser testuser2
Масове виробництво нових користувачів в AD з CSV скриптом PowerShell
У тому випадку, якщо в Active Directory потрібно створити відразу велику кількість користувачів, зручніше зберегти список користувачів у форматі CSV (Excel) файлу, а потім запустити спеціальний PowerShell скрипт. В даному файлі потрібно заповнити всі значущі для вас атрибути користувачів.
Наприклад, мій Excel файл з користувачами складається з 9 колонок і має наступний формат шапки:
FirstName; LastName; Initials; SamAccountName; Phone; Department; JobTitle; Password; OU
Заповніть дані користувачів і збережіть Exсel файл з в форматі CSV c запитом, як роздільники. Кодування файлу повинна бути обов'язково UTF-8 (важливо!). Крім того, тому що в значеннях стовпця OU є коми, потрібно екранувати їх, взявши в подвійні лапки.
Тепер можна імпортувати даний CSV файл (new_ad_users2.csv) і створити в домені нових користувачів. Код готового PowerShell скрипта представлений нижче:
Примітка.
- Ім'я користувача в домені ми будемо заводити на англійській мові, тому для транслітерації імен і прізвищ користувачів з кирилиці в латиницю ми додамо в скрипт окрему функцію Translit.
- Якщо в якості роздільника CSV файлу використовується ";", В командлет Import-Csv потрібно додати аргумент -delimiter«; »
Import-Module activedirectory
Import-Csv "C: \ ps \ new_ad_users2.csv" | ForEach-Object
$ Upn = $ _. SamAccountName + "@ contoso.loc"
$ Uname = $ _. LastName + "" + $ _. FirstName + "" + $ _. Initials
# Переводимо в трансліт прізвище, ім'я та по батькові
$ TransLastName = Translit ($ _. LastName)
$ TransFirstName = Translit ($ _. FirstName)
$ TransInitials = Translit ($ _. Initials)
$ Transuname = $ transLastName + "" + $ transFirstName + "" + $ transInitials
New-ADUser -Name $ transuname '
-DisplayName $ uname '
-GivenName $ _. FirstName '
-Surname $ _. LastName '
-Initials $ _. Initials '
-OfficePhone $ _. Phone '
-Department $ _. Department '
-Title $ _. JobTitle '
-UserPrincipalName $ upn '
-SamAccountName $ _. SamAccountName '
-Path $ _. OU '
-AccountPassword (ConvertTo-SecureString $ _. Password -AsPlainText -force) -Enabled $ true
# Сама функція транслітерації
function global: Translit
param ([string] $ inString)
$ Translit = @
[Char] 'а' = "a"
[Char] 'А' = "A"
[Char] 'б' = "b"
[Char] 'Б' = "B"
[Char] 'в' = "v"
[Char] 'В' = "V"
[Char] 'г' = "g"
[Char] 'Г' = "G"
[Char] 'д' = "d"
[Char] 'Д' = "D"
[Char] 'е' = "e"
[Char] 'Е' = "E"
[Char] 'е' = "yo"
[Char] 'Е' = "Yo"
[Char] 'ж' = "zh"
[Char] 'Ж' = "Zh"
[Char] 'з' = "z"
[Char] 'З' = "Z"
[Char] 'і' = "i"
[Char] 'І' = "I"
[Char] 'ї' = "j"
[Char] 'Ї' = "J"
[Char] 'до' = "k"
[Char] 'К' = "K"
[Char] 'л' = "l"
[Char] 'Л' = "L"
[Char] 'м' = "m"
[Char] 'М' = "M"
[Char] 'н' = "n"
[Char] 'Н' = "N"
[Char] 'про' = "o"
[Char] 'О' = "O"
[Char] 'п' = "p"
[Char] 'П' = "P"
[Char] 'р' = "r"
[Char] 'Р' = "R"
[Char] 'з' = "s"
[Char] 'С' = "S"
[Char] 'т' = "t"
[Char] 'Т' = "T"
[Char] 'у' = "u"
[Char] 'У' = "U"
[Char] 'ф' = "f"
[Char] 'Ф' = "F"
[Char] 'х' = "h"
[Char] 'Х' = "H"
[Char] 'ц' = "c"
[Char] 'Ц' = "C"
[Char] 'ч' = "ch"
[Char] 'Ч' = "Ch"
[Char] 'ш' = "sh"
[Char] 'Ш' = "Sh"
[Char] 'щ' = "sch"
[Char] 'Щ' = "Sch"
[Char] 'ь' = ""
[Char] 'Комерсант' = ""
[Char] 'и' = "y"
[Char] 'И' = "Y"
[Char] 'ь' = ""
[Char] 'Ь' = ""
[Char] 'е' = "e"
[Char] 'Е' = "E"
[Char] 'ю' = "yu"
[Char] 'Ю' = "Yu"
[Char] 'я' = "ya"
[Char] 'Я' = "Ya"
$ OutCHR = ""
foreach ($ CHR in $ inCHR = $ inString.ToCharArray ())
if ($ Translit [$ CHR] -cne $ Null)
$ OutCHR + = $ Translit [$ CHR]
else
$ OutCHR + = $ CHR
Write-Output $ outCHR
Після виконання скрипта, відкрийте консоль ADUC, розгорніть вказаний контейнер і переконайтеся, що в AD з'явилися нові учеткі користувачів (відстежити створення облікових записів в AD можна так: Отримання списку облікових записів AD, створених за останні 24 години.)
Створювані облікові записи можна відразу додати в певну групу AD за допомогою командлета Add-AdGroupMember, для цього потрібно трохи модифікувати скрипт, додавши в циклі рядок:
Add-AdGroupMember -Identity AllowPublicInet -Members $ _. SamAccountName
Або відразу встановити фотографію користувача в AD, щоб вона відображалася в Outlook і Lync:
Set-ADUser $ _. SamAccountName -Replace @ thumbnailPhoto = ([byte []] (Get-Content "C: \ ps \ user1_photo.jpg" -Encoding byte))