Войти

Показать полную графическую версию : [решено] Создания пользователя в AD


ejik_off
01-12-2011, 10:42
Всем доброго времени суток!!!
Написал скрипт для создания пользователя в ад
New-ADUser -Name "Василий Пупкин" -SamAccountName v_pupkin -GivenName Василий
-Surname Пупкин -DisplayName "Василий Пупкин" -Path 'OU=Test,OU=users,OU=corp,DC=lab,DC=com'-UserPrincipalName "v_pupkin@lab.com"
-CannotChangePassword $false -ChangePasswordAtLogon $true -Enabled $true -AccountPassword (Read-Host -AsSecureString AccountPassword)
Скрипт отрабатывается нормально, но чтобы не ковырять постоянно скрипт, а передавать необходимые параметры из командной строки я немного изменил данный скрипт

Param ($account, $gname, $sname, $OrUn);
$fname = $gname + " " + $sname ;

Function UserAdd ()
{
New-ADUser -Name $fname -SamAccountName $account -GivenName $gname -Surname $sname -DisplayName $fname -Path 'OU='$OrUn',OU=users,OU=corp,DC=lab,DC=com'-UserPrincipalName $account"@lab.com" -CannotChangePassword $false -ChangePasswordAtLogon $true -Enabled $true -AccountPassword (Read-Host -AsSecureString AccountPassword)
}
UserAdd -SamAccountName $account -GivenName $gname -Surname $sname -DisplayName $fname -Path $OrUn -UserPrincipalName $upn
Запуск скрипта с параметрами useradd.ps1 -account v_pupkin -gname Василий -fname Пупкин -OrUn test приводит к такой ошибке
Set-Location : Не удается найти параметр, соответствующий имени параметра "account".
строка:1 знак:34
+ cd script\ps\useradd.ps1 -account <<<< v_pupkin -gname Василий -fname Пупкин
-OrUn test
+ CategoryInfo : InvalidArgument: (:) [Set-Location], ParameterBi
ndingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
ands.SetLocationCommand
Подскажите что делаю не правильно?

Kazun
01-12-2011, 13:05
Param ($account, $gname, $sname, $OrUn)
$fname = $gname + " " + $sname

New-ADUser -Name $fname -SamAccountName $account -GivenName $gname `
-Surname $sname -DisplayName $fname -Path "OU=$OrUn,OU=users,OU=corp,DC=lab,DC=com" `
-UserPrincipalName "$account@lab.com" -CannotChangePassword $false `
-ChangePasswordAtLogon $true -Enabled $true `
-AccountPassword (Read-Host -AsSecureString AccountPassword)

ejik_off
01-12-2011, 13:28
Kazun, :) Перемудрил значит я. Еще такая мелочь, не хочется постоянно вводить пароль, как можно его в скрипте прописать, в справки не нашел или плохо смотрел.

Kazun
01-12-2011, 13:30
$password = ConvertTo-SecureString "PassWord" -AsPlainText -Force

ejik_off
01-12-2011, 13:59
Большое спасибо за помощь!!!!

ejik_off
02-12-2011, 11:09
Kazun, Еще вопрос по данному скрипту, хочется полностью автоматизировать. Добавил еще добавление пользователя в группы, но вот ни как не могу это отладить все время вылетает с ошибкой.
скрипт:
Param ($account, $gname, $sname, $OrUn)
$fname = $gname + " " + $sname
$password = ConvertTo-SecureString "Pa$$w0rd" -AsPlainText -Force
New-ADUser -Name $fname -SamAccountName $account -GivenName $gname `
-Surname $sname -DisplayName $fname -Path "OU=$OrUn,OU=users,OU=corp,DC=lab,DC=com" `
-UserPrincipalName "$account@lab.com" -CannotChangePassword $false `
-ChangePasswordAtLogon $true -Enabled $true `
-AccountPassword $password
$group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} | Select DistinguishedName
Foreach ($GR in $group)
{
Add-ADGroupMember $GR -Members $account
}
Вот ошибка:
Add-ADGroupMember : Не удается привязать параметр "Identity". Не удается преобразовать значение "@{DistinguishedName=CN=DG-CAP-Restrict-Outside,OU=Groups,OU
=corp,DC=lab,DC=com}" типа "Selected.Microsoft.ActiveDirectory.Management.ADGroup" в тип "Microsoft.ActiveDirectory.Management.ADGroup".
D:\script\ps\useradd.ps1:22 знак:19
+ Add-ADGroupMember <<<< $GR -Members $account
+ CategoryInfo : InvalidArgument: (:) [Add-ADGroupMember], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
Вот что ему не нравиться я так и не могу понять. Менял уже и тип вывода на System.String т.е
$group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} | Select Name | Out-String но и это не помогло.

ejik_off
02-12-2011, 14:32
Разобрался $group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} | Select Name изменить $group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} и готова

ejik_off
09-12-2011, 07:20
Ну собственно довел скрип до конца, ИМХО. Просьба к гуру-PS, посмотреть и ткнуть на недостатки или недочеты скрипта. Или как можно было написать более красивый скрипт. Очень важно мнение знающих, так как только начинаю изучать PS.
Ну собственно вот сам скрипт.


##################################################
# $account - логин для входа в систему #
# $gname - Имя #
# $sname - Фамилия #
# $fname - Имя Фамилия #
# $OrUn - Организационное подразделение в AD #
# может принемать Local или Regional #
# $Dep - Департамент, для филиалов город #
##############################################################
# Пример запуска скрипта #
# useradd.ps1 -account v_pupkin -gname Василий -sname Пупкин -OrUn Test -Dep *атырау #
##############################################################


Param ($account, $gname, $sname, $OrUn, $Dep)
$fname = $gname + " " + $sname
$password = ConvertTo-SecureString "Pa$$w0rd" -AsPlainText -Force
New-ADUser -Name $fname -SamAccountName $account -GivenName $gname `
-Surname $sname -DisplayName $fname -Path "OU=$OrUn,OU=users,OU=corp,DC=lab,DC=com" `
-UserPrincipalName "$account@lab.com" -CannotChangePassword $false `
-ChangePasswordAtLogon $true -Enabled $true `
-AccountPassword $password
$group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"}
Foreach ($DG in $group)
{
Add-ADPrincipalGroupMembership $account -MemberOf $DG
}
Add-ADGroupMember GRP-OpenFire -Members $account
$regname = Get-ADGroup -Filter {DisplayName -like $Dep } | Where {$_.GroupCategory -eq "Security"}

Add-ADGroupMember $regname -Members $account




© OSzone.net 2001-2012