 |
|
Создания пользователя в AD
Всем доброго времени суток!!!
Написал скрипт для создания пользователя в ад
Код:
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
Подскажите что делаю не правильно?
|
Код:
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)
|
Kazun, :) Перемудрил значит я. Еще такая мелочь, не хочется постоянно вводить пароль, как можно его в скрипте прописать, в справки не нашел или плохо смотрел.
|
Код:
$password = ConvertTo-SecureString "PassWord" -AsPlainText -Force
|
Большое спасибо за помощь!!!!
|
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 но и это не помогло.
|
Разобрался $group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} | Select Name изменить $group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} и готова
|
Ну собственно довел скрип до конца, ИМХО. Просьба к гуру-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
|
Время: 23:25.
© OSzone.net 2001-