Когда вы тестируете SharePoint или любые другие продукты, использующие Active Directory, очень важно использовать большие объемы данных, приближенные к реальным. Например, если у вас в Active Directory 10 или 20 тестовых пользователей, а возможно 50 или 100 с именами типа Тест 1, Тест 2 и т.д., этого явно недостаточно.
Рассмотрим, как можно заполнить Active Directory большим (over 9000) количеством данных, максимально приближенных к реальности.
Получаем данные
Для генерации пользовательских данных воспользуемся сервисом Fake Name Generator. У этого замечательного сервиса есть возможность сгенерировать до 50 000 пользователей за один раз. При этом можно выбрать страну, и свойства пользователей, включенные в экспортный файл.
Выбрав все свойства, вы получите файл со всеми данными по электронной почте.
Импортируем данные
Рассмотрим импорт данных из полученного ранее CSV файла с помощью PowerShell. Мы немного изменим исходные данные, и далее создадим учетные записи в Active Directory на их основе.
Сперва создадим OU («Demo Users»), куда разместим всех новых пользователей и зададим политику для паролей
Import-Module ActiveDirectory
$dn = (Get-ADDomain).DistinguishedName
$forest = (Get-ADDomain).Forest
Set-ADDefaultDomainPasswordPolicy $forest -ComplexityEnabled $false -MaxPasswordAge "1000" -PasswordHistoryCount 0 -MinPasswordAge 0
$ou = Get-ADOrganizationalUnit -Filter 'name -eq "Demo Users"'
if ($ou -eq $null) {
New-ADOrganizationalUnit -Name "Demo Users" -Path $dn
$ou = Get-ADOrganizationalUnit -Filter 'name -eq "Demo Users"'
}
Импортируем CSV файл в PowerShell
$data = Import-Csv .<Имя_Вашего_Файла>.csv
Сейчас мы разместим наши данные в новый объект PowerShell. Обратите внимание, что в данном объекте используются названия параметров командлета New-ADUser, поэтому если вы хотите добавить атрибуты к аккаунтам, это нужно сделать здесь
$refineddata = $data | select @{Name="Name";Expression={$_.Surname + ", " + $_.GivenName}},`
@{Name="SamAccountName"; Expression={$_.Username}},`
@{Name="UserPrincipalName"; Expression={$_.Username +"@" + $forest}},`
@{Name="GivenName"; Expression={$_.GivenName}},`
@{Name="Surname"; Expression={$_.Surname}},`
@{Name="DisplayName"; Expression={$_.Surname + ", " + $_.GivenName}},`
@{Name="City"; Expression={$_.City}},`
@{Name="StreetAddress"; Expression={$_.StreetAddress}},`
@{Name="State"; Expression={$_.State}},`
@{Name="Country"; Expression={$_.Country}},`
@{Name="PostalCode"; Expression={$_.ZipCode}},`
@{Name="EmailAddress"; Expression={$_.EmailAddress}},`
@{Name="AccountPassword"; Expression={ (Convertto-SecureString -Force -AsPlainText "WictorRocks!")}},`
@{Name="OfficePhone"; Expression={$_.TelephoneNumber}},`
@{Name="Title"; Expression={$_.Occupation}},`
@{Name="Enabled"; Expression={$true}},`
@{Name="PasswordNeverExpires"; Expression={$true}}
Обратите внимание, что в скрипте выше поправлены свойства Name и DisplayName, и в UPN используется DNS-имя леса. Кроме этого все пользователи активны.
Время добавить пользователей в Active Directory! Но мы не будем их добавлять в тот OU, который создали ранее. Вместо этого, создадим OU для стран пользователей. Это позволяет лучше управлять тестовыми данными и протестировать работу в разных OU
$refineddata | % {
$subou = Get-ADOrganizationalUnit -Filter "name -eq ""$($_.Country)""" -SearchBase $ou.DistinguishedName
if($subou -eq $null) {
New-ADOrganizationalUnit -Name $_.Country -Path $ou.DistinguishedName
$subou = Get-ADOrganizationalUnit -Filter "name -eq ""$($_.Country)""" -SearchBase $ou.DistinguishedName
}
$_ | Select @{Name="Path"; Expression={$subou.DistinguishedName}},* | New-ADUser
}
Если у вас будут какие-то ошибки во время создания пользователей, скорее всего они связаны с тем, что у некоторых из них одинаковые имена пользователей.
Результат
Зайдите в консоль управления Active Directory и посмотрите, что у вас получилось
Если вы выберете какой-нибудь OU, то увидите там очень много пользователей
При этом профиль пользователей будет заполнен
Заключение
Вы посмотрели как быстро и просто можно заполнить свой каталог Active Directory для тестовых сценариев.
Важно, что в случае с SharePoint может быть накладно создание излишне большого числа аккаунтов ввиду затрат на их синхронизацию и индексацию.
Автор: dplotnikov