Показать полную графическую версию : Как создавать несколько за раз ПК в 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"
$objOUb = [ADSI]"LDAP://OU=b,dc=kakoitotam,dc=local"
$Class = "organizationalUnit"
"comp","comp2" | Foreach {
$OU= "OU=$_"
$objOU = $objOUa.create($Class, $OU)
$objOU.SetInfo()
$objOU = $objOUb.create($Class, $OU)
$objOU.SetInfo()
}
Для компьютеров:
$SobjOU = [ADSI]"LDAP://OU=kakayatotam,dc=kakoitotam,dc=local"
7..15 | Foreach {
$SobjComputer = $SobjOU.Create("computer", "CN=PC_$_")
$SobjComputer.Put("sAMAccountName", "PC_$_$")
$SobjComputer.Put("userAccountControl", 4096)
$SobjComputer.SetInfo()
}
Спасибо большое, очень помогли!)
Ещё пара вопросиков возникла:
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 запускать?
Скрипт можно сделать так, чтоб он работал без модуля?
Может входные параметры можно без функции реализовать??
Спасибо!)
Но для работы этого Пауэршеллу нужен модуль для АД.
Вот скрипт для создания компов, как его к примеру на Windows Server 2003 запускать?
Скрипт можно сделать так, чтоб он работал без модуля?
Входные параметры можно без функции реализовать??
1) Причем тут модуль для AD,когда здесь везде используется Com интерфейс?
2) Запускать,как и любой другой скрипт.
3) Скрипт работает без модуля,что за фантазии.
4) Можно.
1. Ну не знаю, я пытался запустить скрипт на машине с WS 2008, он не запускается, говорит, что не найден модуль. На WS 2003 запускаю, ошибок не выдаёт, но и ничего не создаёт. Может я значения не так ввожу? (принтскрин выложил)
2. А как фаил со скриптом разрешением .ps1 в PS запустить?
4. А как не подскажете?
1) Вот раз не знаете тогда не стоит говорить,а то как обычно ерунда получается.Где ошибки? Объявили Вы функцию,а кто ее выполнять будет или Вам без разницы,главное мифический модуль?
CrPC $path $first $last
2) .\script.ps1 или полный путь к файлу
3)Задать параметры в теле скприта и передать их функции.
Вообще перестал чтото понимать***
я всё правильно делаю?
В таком виде функция не выполнится,для этого изменить скрипт на:
param($path = "LDAP://OU=comp,OU=in,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()
}
Или использовать dot-sourcing для импортирования в текущую сессию:
. .\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_$_")
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.