Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создания пользователя в AD (http://forum.oszone.net/showthread.php?t=221922)

ejik_off 01-12-2011 10:42 1807094

Создания пользователя в 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

Подскажите что делаю не правильно?

Kazun 01-12-2011 13:05 1807199

Код:

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 1807213

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

Kazun 01-12-2011 13:30 1807215

Код:

$password = ConvertTo-SecureString "PassWord" -AsPlainText -Force

ejik_off 01-12-2011 13:59 1807232

Большое спасибо за помощь!!!!

ejik_off 02-12-2011 11:09 1807858

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 1807975

Разобрался $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 1811968

Ну собственно довел скрип до конца, ИМХО. Просьба к гуру-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.

Время: 23:25.
© OSzone.net 2001-