Поиск по сайту:

PowerShell: Добавление пользователей Active Directory из текстовых файлов (массовое)


Когда речь идет о импорте огромного количества пользователей, csv является номером 1. Но как насчет текстовых файлов? Конечно, вы можете экспортировать содержимое текстовых файлов в csv. Но в этой статье я хочу добавить пользователей Active Directory непосредственно из текстовых файлов.

Введение

Для следующего я использую этот текстовый файл. Сходство с персонажами в фильме "Качая железо" является чисто случайным 😉

Я уверен, что большинству администраторов это не нравится. И большинство администраторов начнут конвертировать в CSV. Но я собираюсь принять это таким, какое оно есть.

1. Использование Split для добавления пользователей

Это приводит меня к split. Что такое split? Split - это метод PowerShell. Split может помочь вам разделить что-то. И нам нужно разделить наш список. Нам нужен список имен и фамилий. Итак, мы должны сказать PowerShell, где разделить. Мы хотим разделить по пробелу.

Пример :

("Patrick Grünauer").Split(" ")

Теперь мы вызываем их по отдельности.

$name=("Patrick Grünauer").Split(" ")
$name[0]
$name[1]

Классные вещи. Это именно то, что нам нужно для следующего шага.

Мой файл состоит из имен и фамилий. Это тот же файл, что и выше.

Следующий код

  • разделяет список на имя и фамилию
  • добавляет новых пользователей Active Directory с UserPrincipalName (фамилия), SamAccountName (фамилия), Полное имя (имя + фамилия) и Пароль учетной записи
  • даёт возможность каждому пользователю
  • устанавливает ChangePasswortAtLogon в True
  • показывает, что происходит (подробный параметр)

Вот и пошло:

Get-Content C:\temp\users.txt | ForEach-Object {$Split = $_.Split(" "); $given=$Split[0]; $sur=$Split[1]; New-ADUser -GivenName $given -Surname $sur -Name ($given + " " + $sur) -UserPrincipalName (($sur + "@" + "$env:userdnsdomain")).ToLower() -SamAccountName ($sur).ToLower() -AccountPassword (ConvertTo-SecureString -AsPlainText "Passw00rd123" -Force) -Enabled $true -ChangePasswordAtLogon $true -Verbose}

Разделение прошло успешно. Обратите внимание на имя и фамилию.

Все пользователи активированы, и имена для входа (UPN, SamAccountname) корректны.

2. Использование ConvertFrom-String (PowerShell 5.0 и выше)

Теперь давайте перейдем к более простому решению. Если вы сидите перед сервером с PowerShell 5.0 и выше, вы можете использовать ConvertFrom-String. Посмотрите, что может сделать ConvertFrom-String для вас:

Get-Content C:\temp\Users.txt | ConvertFrom-String

Итак, у нас есть P1 и P2. Это замечательно.

Get-Content C:\temp\users.txt | ConvertFrom-String | ForEach-Object {New-ADUser -GivenName $_.P1 -Surname $_.P2 -Name ($_.P1 + " " + $_.P2) -UserPrincipalName (($_.P2 + "@" + "$env:userdnsdomain")).ToLower() -SamAccountName ($_.P2).ToLower() -AccountPassword (ConvertTo-SecureString -AsPlainText "Passw000rd123" -Force) -Enabled $true -ChangePasswordAtLogon $true -Verbose}

Отличные вещи. Надеюсь, тебе это тоже понравится.

Веселитесь, играя с текстовыми файлами!