Автоматизируйте создание пользователей Active Directory с помощью New-ADUser

Вы устали от открытия Пользователи и компьютеры Active Directory (ADUC), кликания мышью, допуская опечатки и повторяя шаги по созданию новой учетной записи пользователя в шестой раз сегодня? Если да, вам нужно автоматизировать такой обыденный процесс, как использование Active Directory для добавления пользователя с помощью PowerShell с использованием cmdlet New-ADUser!

Пятница вечером, за час до того, как вы планируете уйти на выходные. Неделя была насыщенной, и вы решили посмотреть великолепный матч с близкими друзьями. Но ваш начальник беспечно подходит и спрашивает: “Ты получил письмо? Сможешь справиться с этим до конца дня?” Вы быстро открываете Microsoft Outlook, и, конечно же, там электронное письмо от отдела кадров, где вы включены копией вашего руководителя, с просьбой предоставить 400 новых учетных записей сотрудников в Active Directory (AD) до того, как вы покинете офис. Прекрасно. Прощай, матч.

Вы быстро ищете в Интернете варианты ускоренного создания этих учетных записей пользователей и обнаруживаете, что можно автоматизировать предоставление учетных записей AD с использованием командной строки и cmdlet PowerShell под названием New-ADUser.

Обычно администраторы вручную создают учетные записи AD, используя Пользователи и компьютеры Active Directory установленные на вашем настольном компьютере с помощью Удаленных средств администрирования сервера (RSAT). Но создание учетной записи AD пользователя таким образом занимает в среднем три минуты на одну учетную запись. Создание учетных записей AD пользователей – не блестящая работа и идеально подходит для автоматизации.

Существует три общих способа, которыми администраторы создают объекты учетных записей пользователей AD с использованием cmdlet New-AdUser.

  1. Добавьте учетную запись пользователя Active Directory, используя необходимые и дополнительные параметры cmdlet.
  2. Скопируйте существующий объект пользователя AD, чтобы создать новую учетную запись, используя параметр Instance.
  3. Сопоставьте cmdlet Import-Csv с cmdlet New-ADUser, чтобы создать несколько объектов пользователя Active Directory с использованием файла значений, разделенных запятыми (CSV).

Иногда эти практики могут быть объединены вместе для создания более эффективного решения. Например, вы можете использовать все три варианта для создания шаблонной учетной записи AD, которую можно скопировать с использованием файла CSV для создания нескольких новых учетных записей AD.

В этой статье вы узнаете, как использовать New-AdUser, используя каждый из этих методов.

Управляйте и отчетливо представляйте Active Directory, Exchange и Microsoft 365 с помощью ManageEngine ADManager Plus. Скачайте бесплатную пробную версию!

Необходимые условия/Требования

Прежде чем начать использовать cmdlet New-AdUser, вам нужно удостовериться, что вы соответствуете нескольким требованиям.

  • Windows PowerShell 5.1
  • Пакет Remote Server Administration Tools (RSAT) установлен. Этот пакет устанавливает модуль PowerShell для Active Directory, который содержит командлет New-AdUser
  • Войдите на компьютер с Windows в том же домене, что и учетные записи пользователей, которые вы хотите создать
  • Войдите под учетной записью AD с разрешениями на создание новых учетных записей пользователей

После выполнения этих требований, вы готовы к работе!

Создание одной учетной записи с помощью командлета New-ADUser

Давайте сначала создадим одну учетную запись пользователя, чтобы показать, как работает New-ADUser на базовом уровне. Вы обнаружите, что у New-ADUser нет множества обязательных параметров. Фактически, единственным обязательным параметром является параметр Name, но его редко используют отдельно.

Обычно вы будете использовать множество различных параметров для создания учетной записи пользователя. К счастью, большинство параметров самообъяснимы и хорошо соответствуют тому, что вы видите в ADUC. Как видно на примере ниже, вы легко можете использовать множество параметров. Каждый параметр примерно соответствует одному атрибуту учетной записи пользователя.

Обратите внимание, что мы используем обратные кавычки в примере. Это только для того, чтобы предотвратить длинную строку для удобочитаемости.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

Организационная единица (OU), в которой содержится объект пользователя AD, не может иметь дублирующегося значения SamAccountName.

Теперь, когда учетная запись создана, подтвердите, что она была создана с использованием Get-ADUser cmdlet. Ниже вы можете видеть, что Get-AdUser возвращает некоторые общие атрибуты для только что созданной учетной записи пользователя.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

Копирование существующего объекта пользователя AD

Другой метод создания учетной записи – скопировать существующий объект пользователя AD и использовать его в качестве шаблона для новой учетной записи AD. Существует несколько преимуществ такого подхода:

  • Это экономит время, необходимое для указания каждого параметра отдельно
  • Это помогает стандартизировать создание учетных записей AD
  • Это предотвращает человеческие ошибки, вызванные ручным созданием учетных записей, и позволяет сотрудникам одной команды иметь одни и те же настраиваемые атрибуты AD

Для этого примера вы будете использовать только что созданную учетную запись в качестве шаблона (kesapp-test). Возможно, вам нужно создать новую учетную запись пользователя с такими же атрибутами AD, как state, location, department, country и city. Эта новая учетная запись будет для сотрудника Джеймса Брауна.

Обратите внимание, что существует ограничение этого подхода, и только следующие свойства учетной записи AD, перечисленные в ссылке ниже, могут быть скопированы с помощью этого процесса. Для получения дополнительной информации ознакомьтесь со страницей документации Microsoft Copy a User’s Properties.

Первым шагом является поиск учетной записи пользователя AD, которая будет использоваться в качестве шаблона, убедившись, что все атрибуты для копирования предоставлены через параметр Properties. Для этого используйте cmdlet Get-ADUser, как показано ниже. Это просто сохраняет объект пользователя AD в переменной $template_account.

Обратите внимание, что вторая строка устанавливает свойство UserPrincipalName (UPN) объекта шаблона в $null. Это рекомендуется сделать, чтобы убедиться, что UPN шаблона уникален. У каждой учетной записи пользователя AD должен быть уникальный UPN.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

После того как у вас есть зафиксированная учетная запись пользователя-шаблона, вы можете использовать этот объект в качестве значения для параметра Instance и предоставить любые пользовательские параметры для заполнения других атрибутов, как показано ниже.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Теперь у вас должна быть учетная запись для Джеймса со всеми разрешенными атрибутами AD, перенесенными объектом-шаблоном.

Ошибки при использовании шаблона учетной записи пользователя

Одна распространенная ошибка при использовании этого подхода – использование символа * в параметре Properties при захвате объекта-шаблона. Администраторы делают это, потому что хотят скопировать все свойства учетной записи пользователя сразу. Но это не работает.

Например, следующая команда вызовет ошибку:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Проблема этого подхода заключается в том, что атрибут UserPrincipalName должен быть уникальным в пределах AD Forest. Поэтому UPN должен быть перезаписан в команде New-ADUser или установлен в null в переменной шаблона (показано ниже).

$template_account.UserPrincipalName = $null

Еще одна причина, по которой подход с использованием подстановочного знака не работает, заключается в том, что некоторые из свойств AD, копируемые подстановочным знаком, доступны только для чтения (принадлежат Менеджеру учетных записей безопасности).

Permission error when copying AD objects

Создание новых учетных записей пользователей с помощью файла CSV

Продвинутый шаг – считывание учетных записей сотрудников из файла CSV и использование команды New-ADUser для создания учетных записей пользователей в AD.

Это решение часто используется многими организациями для автоматизации создания учетных записей в сочетании с системами управления персоналом, которые создают плоские файлы с информацией о новых сотрудниках.

Предположим, что вам отправлен список новых сотрудников в файле CSV. Каждая строка в файле CSV представляет собой одну запись и содержит следующие столбцы: Имя, Фамилия, Отдел, Штат, ИдентификаторСотрудника и Офис. Конвенция именования учетной записи для входа пользователя – это первая буква имени сотрудника, конкатенированная с его фамилией, например, ksapp для сотрудника Kevin Sapp.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

После получения файла CSV используйте Import-Csv для чтения файла CSV и захвата каждой строки в виде отдельного объекта. Затем переберите каждую из этих строк, передавая соответствующие поля из файла CSV ожидаемым параметрам New-ADUser. Пример этого приведен ниже.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

Управляйте и отчитывайтесь о Active Directory, Exchange и Microsoft 365 с помощью ManageEngine ADManager Plus. Скачайте бесплатную пробную версию!

Сводка

В этом сообщении вы узнали, как предоставлять новые учетные записи пользователей, используя три различных метода:

  1. Создание отдельной учетной записи
  2. Копирование учетной записи пользователя из шаблона
  3. Создание нескольких учетных записей с использованием файла CSV

Это основные способы предоставления новых пользователей в вашей среде. Эти методы отлично работают, когда вы объединяете их, создавая функцию PowerShell и модуль. Вы можете даже пойти дальше и создать свой собственный процесс автоматизации, используя базу данных SQL или Oracle в качестве источника (вместо файла CSV).  Не стесняйтесь использовать каждый метод в зависимости от ваших собственных уникальных требований и сценариев использования.

Надеюсь, эта информация сэкономит вам время в случае необходимости! Вы приобрели новый навык и смогли посетить вечеринку со своими друзьями, не жертвуя балансом между работой и личной жизнью!

Дополнительное чтение

Source:
https://adamtheautomator.com/new-aduser/