AssGuard
28-05-2015, 17:28
Добрый день.
Есть задача по созданию нескольких сотен пользователей в AD на базе WinServer 2012R2.
Есть csv-файл со всеми данными, есть скрипт для powershell для импорта, но есть один нюанс: нужно заполнить 4 специфических поля KZIIN, KZCLASS, KZALTEMAIL, KZROLE, которые также есть в csv.
Суть проблемы: скрипт не заполняет специфические поля, хотя они в АД созданы, без строк по заполнению полей - все работает отлично.
Как пофиксить?
Import-Module ActiveDirectory
$pass = ConvertTo-SecureString -String "Password01" -AsPlainText -Force
$ou = "OU=8A,OU=8Classes,OU=Students,OU=KRG,DC=our,DC=domain,DC=KZ"
$dom = "krg"
$users = Import-CSV C:\Users\Admin\Desktop\users.csv
$users | ForEach-Object {
#Имя и фамилия латиницей
$gn = $_.GivenName_lat
$sn = $_.Surname_lat
#Класс
$class = $_.Class+$_.Liter
#Личная почта
$email = $_.altEmail
#Мобильный
$MobilePhone = $_.mobile
#Имя и фамилия кириллицией
$name = "$($_.GivenName) $($_.Surname)"
#ИИН
$iin = $_.IIN
#Имя
$givenname = $_.GivenName
#Фамилия
$surname = $_.Surname
#Грубо говоря корп.почта и имя пользователя АД
$upn = $_.Upn
#Создается имя пользователя вида Фамилия_И.поддомен
$gn1 = $gn.SubString(0,1)
$prefix = $sn+"_"+$gn1
$gn2 = $gn.SubString(0,1)
$prefix = $sn+"_"+$gn2
$sam = $prefix+"."+$dom
#Почта корпоративная
$mail = $upn
#Мобильный телефон
$phone = $MobilePhone
#Роль в системе
$role = "student"
if (Get-ADUser -Filter {UserPrincipalName -eq $upn})
{
Write-Host "User exists: $($upn)"
Set-ADUser -Server krg-srv-dc01 -Identity $sam -GivenName $givenname -Surname $surname -DisplayName $name -sAMAccountName $sam -OtherAttributes @{KZIIN=$iin;KZCLASS=$class;KZALTEMAIL=$email;KZROLE="student"}
return
}
else
{
New-ADUser -Server krg-srv-dc01 `
-UserPrincipalName $upn `
-GivenName $givenname `
-Surname $surname `
-Name $name `
-DisplayName $name `
-sAMAccountName $sam `
-EmailAddress $mail `
-OfficePhone $phone `
-Path $ou `
-AccountPassword $pass `
-PasswordNeverExpires $True `
-Enabled $True `
-ChangePasswordAtLogon $False `
-OtherAttributes @{'KZIIN'=$iin;'KZCLASS'=$class;'KZALTEMAIL'=$email;'KZROLE'=$role} `
}
}
Вот вывод консоли:
New-ADUser : A value for the attribute was not in the acceptable range of values
At line:1 char:1
+ New-ADUser -Server krg-srv-dc01 -UserPrincipalName 'Abeuov_A@krg.our.domain.kz' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Абеуов Алибе...is,DC=domain,DC=KZ:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8322,Microsoft.ActiveDirectory.Management.Commands.NewADUser
Есть задача по созданию нескольких сотен пользователей в AD на базе WinServer 2012R2.
Есть csv-файл со всеми данными, есть скрипт для powershell для импорта, но есть один нюанс: нужно заполнить 4 специфических поля KZIIN, KZCLASS, KZALTEMAIL, KZROLE, которые также есть в csv.
Суть проблемы: скрипт не заполняет специфические поля, хотя они в АД созданы, без строк по заполнению полей - все работает отлично.
Как пофиксить?
Import-Module ActiveDirectory
$pass = ConvertTo-SecureString -String "Password01" -AsPlainText -Force
$ou = "OU=8A,OU=8Classes,OU=Students,OU=KRG,DC=our,DC=domain,DC=KZ"
$dom = "krg"
$users = Import-CSV C:\Users\Admin\Desktop\users.csv
$users | ForEach-Object {
#Имя и фамилия латиницей
$gn = $_.GivenName_lat
$sn = $_.Surname_lat
#Класс
$class = $_.Class+$_.Liter
#Личная почта
$email = $_.altEmail
#Мобильный
$MobilePhone = $_.mobile
#Имя и фамилия кириллицией
$name = "$($_.GivenName) $($_.Surname)"
#ИИН
$iin = $_.IIN
#Имя
$givenname = $_.GivenName
#Фамилия
$surname = $_.Surname
#Грубо говоря корп.почта и имя пользователя АД
$upn = $_.Upn
#Создается имя пользователя вида Фамилия_И.поддомен
$gn1 = $gn.SubString(0,1)
$prefix = $sn+"_"+$gn1
$gn2 = $gn.SubString(0,1)
$prefix = $sn+"_"+$gn2
$sam = $prefix+"."+$dom
#Почта корпоративная
$mail = $upn
#Мобильный телефон
$phone = $MobilePhone
#Роль в системе
$role = "student"
if (Get-ADUser -Filter {UserPrincipalName -eq $upn})
{
Write-Host "User exists: $($upn)"
Set-ADUser -Server krg-srv-dc01 -Identity $sam -GivenName $givenname -Surname $surname -DisplayName $name -sAMAccountName $sam -OtherAttributes @{KZIIN=$iin;KZCLASS=$class;KZALTEMAIL=$email;KZROLE="student"}
return
}
else
{
New-ADUser -Server krg-srv-dc01 `
-UserPrincipalName $upn `
-GivenName $givenname `
-Surname $surname `
-Name $name `
-DisplayName $name `
-sAMAccountName $sam `
-EmailAddress $mail `
-OfficePhone $phone `
-Path $ou `
-AccountPassword $pass `
-PasswordNeverExpires $True `
-Enabled $True `
-ChangePasswordAtLogon $False `
-OtherAttributes @{'KZIIN'=$iin;'KZCLASS'=$class;'KZALTEMAIL'=$email;'KZROLE'=$role} `
}
}
Вот вывод консоли:
New-ADUser : A value for the attribute was not in the acceptable range of values
At line:1 char:1
+ New-ADUser -Server krg-srv-dc01 -UserPrincipalName 'Abeuov_A@krg.our.domain.kz' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Абеуов Алибе...is,DC=domain,DC=KZ:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8322,Microsoft.ActiveDirectory.Management.Commands.NewADUser