Создаем пользователей AD в powershell используя New-ADUser


26 июля 2019


New-ADUser создание пользователей AD с Powershell

Создание пользователей в Powershell можно выполнить через команду New-ADUser. Мы рассмотрим как создавать в определенной OU, с паролем, из CSV и с другими параметрами. 

Если мы наберем просто команду, то нам предложат ввести логин и наш пользователь создастся отключенным в папке User:

New-ADUser

Логин (Name) - это единственный обязательный параметр для заполнения. Оно соответствует полю, которое выделено на рисунке ниже:

User logon

 

Создание пользователя в 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 - соответствует полю выделенному на рисунке ниже

UserPrincipleName

new-aduser powershell примеры


Создание пользователя в 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"

powershell создание пользователя ad в определенной ou

 

Создание пользователей AD из CSV в Powershell New-ADUser

Я создал в Excel такой файл и сохранил как CSV:

CSV Ad powershell New-AdUser

Для того что бы импортировать файл есть командлет 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, который покажет результаты выполнения команды, но не выполнит ее физически.

...

Теги: #powershell #ad


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.