New-ADUser Створюємо користувачів в AD за допомогою PowerShell

Найпростіший спосіб створити нового користувача в домені 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))