![]() |
Как создавать несколько за раз ПК в AD
Ммм... Ээээ... Ну в общем привет всем)
Есть ведь классический скрпит на создание компов в AD, как то так вроде, не уверен, что правильно, но всё же: $SobjOU = [ADSI]" LDAP :// OU=kakayatotam,dc=kakoitotam,dc=local" $SobjComputer = SobjOU. Create("computer", "CN=1") $SobjComputer.Put("sAMAccountName", "1$") $objComputeг.Put("userAccountControl", 4096) $SobjComputer.SetInfo() Так вот задача такова: нужен скрипт создающий не один, а скажем n компов и автоматически присваивающий каждому из них имя типа от PC_7 до PC_15,... Помогите пожалуйста!! Или может такой скрипт уже есть? - П.С: я в деле пауэршелл совсем новенький, маленький вопрос не по задаче: как перечислять? Ну к примеру у меня скрипт на создание папки: $objADSI = [ADSI]“LDAP://OU=a,dc=kakoitotam,dc=local” $Class = “organizationalUnit” $OU = “OU=comp” $objOU = $objADSI.create($Class, $OU) $objOU.SetInfo() $OU = “OU=comp2” $objOU = $objADSI.create($Class, $OU) $objOU.SetInfo() как с помощью одного скрипта создавать папки комп и комп2 сразу и в папке a и b?) Или как меньшим количеством текста создавать папки комп и комп2?) |
Код:
$objOUa = [ADSI]"LDAP://OU=a,dc=kakoitotam,dc=local" Код:
$SobjOU = [ADSI]"LDAP://OU=kakayatotam,dc=kakoitotam,dc=local" |
Спасибо большое, очень помогли!)
|
Ещё пара вопросиков возникла:
1: При создании компьютеров скажем с именами от 7ми до 15ти в списке АД компы идут от 10 до 15, а только потом от 7го до 9го. Пытался создавать компы не 7..15 а 07..15, но пш делает то же самое. Существует для этой маленькой проблемки решение? 2: а как так же создавать компьютеры, но с днс именами? |
1) 7..15 | foreach {"$_".padleft(2,"0")}
2) второй вопрос я не понял |
Спасибо)
Ну когда в АД смотришь свойства созданного компьютера, у него не указано доменное имя. Как создавать с ним? |
Зачем его создавать,когда оно автоматически создается при присоединении компьютера к домену.
|
Пункт следующий:
Как сделать эти скрипты через функции с входными параметрами? вот для создания компов помоему так: (правильно ли?) function CrPC ([int] $first, [int] $last) { $SobjOU = [ADSI]"LDAP://OU=comp,OU=in,dc=alonez,dc=local" $first..$last | Foreach { $SobjComputer = $SobjOU.Create("computer", "CN=ou_name_ws_$_") $SobjComputer.Put("sAMAccountName", "ou_name_ws_$_$") $SobjComputer.Put("userAccountControl", 4096) $SobjComputer.SetInfo() } } Как при этом сделать ссылку на нужную OU входным параметром, как ввод начального и конечного номеров компов? |
function CrPC ($path = "LDAP://OU=comp,OU=in,dc=alonez,dc=local",$first, $last)
$SobjOU = [ADSI]$path |
Спасибо!)
Но для работы этого Пауэршеллу нужен модуль для АД. Вот скрипт для создания компов, как его к примеру на Windows Server 2003 запускать? Скрипт можно сделать так, чтоб он работал без модуля? Может входные параметры можно без функции реализовать?? |
Код:
Спасибо!) 2) Запускать,как и любой другой скрипт. 3) Скрипт работает без модуля,что за фантазии. 4) Можно. |
Вложений: 1
1. Ну не знаю, я пытался запустить скрипт на машине с WS 2008, он не запускается, говорит, что не найден модуль. На WS 2003 запускаю, ошибок не выдаёт, но и ничего не создаёт. Может я значения не так ввожу? (принтскрин выложил)
2. А как фаил со скриптом разрешением .ps1 в PS запустить? 4. А как не подскажете? |
1) Вот раз не знаете тогда не стоит говорить,а то как обычно ерунда получается.Где ошибки? Объявили Вы функцию,а кто ее выполнять будет или Вам без разницы,главное мифический модуль?
CrPC $path $first $last 2) .\script.ps1 или полный путь к файлу 3)Задать параметры в теле скприта и передать их функции. |
Вложений: 1
Вообще перестал чтото понимать***
я всё правильно делаю? |
В таком виде функция не выполнится,для этого изменить скрипт на:
Код:
param($path = "LDAP://OU=comp,OU=in,dc=alonez,dc=local",$first, $last) . .\crpc.ps1 CrPC $path $first $last |
изменил скрипт. ввод .\crpc создаёт один комп с номером 0.
ввод после этого CrPC $first=7 $last=9 - не распознаёт crpc как имя кмдлета или фкции ввод .\crpc $first=7 $last=9 - "входная строка имеет неверный формат" ввод .\crpc $first 7 $last 9 - "нельзя вызвать метод для выражения со значением null" так всё же, на сколько я понял всё должно работать. Так как правильно вводить параметры?? |
.\crpc -path "LDAP://OU=comp,OU=in,dc=alonez,dc=local" -first 7 -last 9
|
Шикос!!))
Мои искренние извинения за проявленную тупость. Мне правда стыдно. |
param($path = "LDAP://dc=alonez,dc=local",$first, $last)
$SobjOU = [ADSI]$path $first..$last | Foreach { $SobjComputer = $SobjOU.Create("computer", "CN=ou_name_ws_$_") $SobjComputer.Put("sAMAccountName", "ou_name_ws_$_$") $SobjComputer.Put("userAccountControl", 4096) $SobjComputer.SetInfo() } Как сделать ou_name входным параметром? |
param($path = "LDAP://dc=alonez,dc=local",$first, $last",$ou_name = "Test")
$SobjComputer = $SobjOU.Create("computer", "CN=$ou_name`_ws_$_") |
Вопрос следующий: как задавать условия для входных параметров? Ну к примеру, чтоб если число "фёрст" меньше "ласт", или какоето из них отрицательное, скрпит не выполнялся, а выдавал "ошибка"?
|
Код:
if ($first -lt $last -and $first -ge 0 -and $last -gt 0) { |
Время: 21:21. |
Время: 21:21.
© OSzone.net 2001-