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}Отличные вещи. Надеюсь, тебе это тоже понравится.
Веселитесь, играя с текстовыми файлами!









