Создание пользователей в Powershell можно выполнить через команду New-ADUser. Мы рассмотрим как создавать в определенной OU, с паролем, из CSV и с другими параметрами.
Если мы наберем просто команду, то нам предложат ввести логин и наш пользователь создастся отключенным в папке User:
New-ADUser
Логин (Name) - это единственный обязательный параметр для заполнения. Оно соответствует полю, которое выделено на рисунке ниже:
Создание пользователя в Powershell с параметрами New-ADUser
У командлета есть много параметров (больше 60) и мы рассмотрим основные из них. Для того что бы увидеть все параметры выполните следующее:
Get-Help New-ADUser -Parameter *
Или если хотите найти конкретный параметр (в моем случае все где есть Name):
Get-Help New-ADUser -Parameter *Name*
Обычно нам нужно создать учетку AD с паролем, именем и фамилией и она должна быть активна. Для создания пользователя AD с паролем используется другой командлет Powershell. Я объявлю пароль в переменной, но можно сразу и при создании пользователя:
$pass = ConvertTo-SecureString -String "Password133!" -AsPlainText -Force
Затем создадим пользователя:
New-ADUser -Name "a.strelnikov" -GivenName "Alex" -Surname "Strelnikov" -AccountPassword $pass -Enabled $true -UserPrincipalName "a.strelnikov@domain.local"
Где:
- Name - логин
- GivenName - имя
- SurName - фамилия
- AccountPassword - пароль, который мы объявили в переменной
- Enbaled - делает пользователя активным
- UserPrincipleName - соответствует полю выделенному на рисунке ниже
Создание пользователя в Powershell в определенной OU используя New-ADUser Path
Для добавления пользователя в другой OU нужно использовать ключ Path. На примере домена domain.local и организационной единице Moscow путь будет выглядеть так:
$ou = "OU=Moscow,DC=domain,DC=local"
$pass = ConvertTo-SecureString -String "Password133!" -AsPlainText -Force
New-ADUser -Path $ou -Name "v.petushenko" -GivenName "Vladimir" -Surname "Petushenko" -AccountPassword $pass -Enabled $true -UserPrincipalName "v.petushenko.local"
Причем может появится ошибка:
new-aduser объект каталога не найден
Т.к. в пути вместо OU указывают контейнер CN.
Или если в нас вложенные OU:
$ou = "OU=Marketing,OU=Moscow,DC=domain,DC=local"
Создание пользователей AD из CSV в Powershell New-ADUser
Я создал в Excel такой файл и сохранил как CSV:
Для того что бы импортировать файл есть командлет Import-Csv. Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:
(Get-Culture).TextInfo.ListSeparator
Если есть отличия, то тогда в команде импорта нужно добавить ключ '-Delimiter' и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.
Импорт и создание пользователей делается так:
#Импортируем пользователей. В моем случае разделитель ;
$users = Import-Csv -Path C:\book.csv -Delimiter ";"
#Создаем пароль
$pass = (ConvertTo-SecureString "Password123!" -AsPlainText -Force)
#Создаем пользователей
$users | ForEach-Object {New-ADUser -Name $_.Name -GivenName $_.GivenName -Path ("OU="+$_.Path+",DC=domain,DC=local") -Surname $_.Surname -AccountPassword $pass -Enabled $true }
Сложение в Path сделано для демонстрации такой возможности и не является обязательным.
У меня так же была ошибка:
- new-aduser указанное имя не является корректным именем пользователя
- New-ADUser : The object name has bad syntax
- New-ADUser : Directory object not found
Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем " ' в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.
Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.
Если вы не уверены в том, что все данные корректны, то можете добавить ключ -WhatIf, который покажет результаты выполнения команды, но не выполнит ее физически.
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #ad