PDA

Показать полную графическую версию : Как создавать несколько за раз ПК в AD


Страниц : [1] 2

Alonez
19-01-2012, 13:32
Ммм... Ээээ... Ну в общем привет всем)
Есть ведь классический скрпит на создание компов в 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?)

Kazun
19-01-2012, 13:42
$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()
}

Alonez
19-01-2012, 18:49
Спасибо большое, очень помогли!)

Alonez
20-01-2012, 11:55
Ещё пара вопросиков возникла:
1: При создании компьютеров скажем с именами от 7ми до 15ти в списке АД компы идут от 10 до 15, а только потом от 7го до 9го. Пытался создавать компы не 7..15 а 07..15, но пш делает то же самое. Существует для этой маленькой проблемки решение?

2: а как так же создавать компьютеры, но с днс именами?

Kazun
20-01-2012, 12:34
1) 7..15 | foreach {"$_".padleft(2,"0")}
2) второй вопрос я не понял

Alonez
20-01-2012, 12:51
Спасибо)

Ну когда в АД смотришь свойства созданного компьютера, у него не указано доменное имя. Как создавать с ним?

Kazun
20-01-2012, 12:54
Зачем его создавать,когда оно автоматически создается при присоединении компьютера к домену.

Alonez
24-01-2012, 12:03
Пункт следующий:

Как сделать эти скрипты через функции с входными параметрами?

вот для создания компов помоему так: (правильно ли?)


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 входным параметром, как ввод начального и конечного номеров компов?

Kazun
24-01-2012, 12:24
function CrPC ($path = "LDAP://OU=comp,OU=in,dc=alonez,dc=local",$first, $last)
$SobjOU = [ADSI]$path

Alonez
31-01-2012, 09:09
Спасибо!)
Но для работы этого Пауэршеллу нужен модуль для АД.
Вот скрипт для создания компов, как его к примеру на Windows Server 2003 запускать?
Скрипт можно сделать так, чтоб он работал без модуля?

Может входные параметры можно без функции реализовать??

Kazun
31-01-2012, 10:44
Спасибо!)
Но для работы этого Пауэршеллу нужен модуль для АД.
Вот скрипт для создания компов, как его к примеру на Windows Server 2003 запускать?
Скрипт можно сделать так, чтоб он работал без модуля?

Входные параметры можно без функции реализовать??

1) Причем тут модуль для AD,когда здесь везде используется Com интерфейс?
2) Запускать,как и любой другой скрипт.
3) Скрипт работает без модуля,что за фантазии.
4) Можно.

Alonez
31-01-2012, 11:12
1. Ну не знаю, я пытался запустить скрипт на машине с WS 2008, он не запускается, говорит, что не найден модуль. На WS 2003 запускаю, ошибок не выдаёт, но и ничего не создаёт. Может я значения не так ввожу? (принтскрин выложил)

2. А как фаил со скриптом разрешением .ps1 в PS запустить?

4. А как не подскажете?

Kazun
31-01-2012, 11:17
1) Вот раз не знаете тогда не стоит говорить,а то как обычно ерунда получается.Где ошибки? Объявили Вы функцию,а кто ее выполнять будет или Вам без разницы,главное мифический модуль?

CrPC $path $first $last

2) .\script.ps1 или полный путь к файлу

3)Задать параметры в теле скприта и передать их функции.

Alonez
31-01-2012, 12:15
Вообще перестал чтото понимать***


я всё правильно делаю?

Kazun
31-01-2012, 12:33
В таком виде функция не выполнится,для этого изменить скрипт на:

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

Alonez
31-01-2012, 13:25
изменил скрипт. ввод .\crpc создаёт один комп с номером 0.
ввод после этого CrPC $first=7 $last=9 - не распознаёт crpc как имя кмдлета или фкции

ввод .\crpc $first=7 $last=9 - "входная строка имеет неверный формат"

ввод .\crpc $first 7 $last 9 - "нельзя вызвать метод для выражения со значением null"

так всё же, на сколько я понял всё должно работать. Так как правильно вводить параметры??

Kazun
31-01-2012, 13:32
.\crpc -path "LDAP://OU=comp,OU=in,dc=alonez,dc=local" -first 7 -last 9

Alonez
01-02-2012, 10:01
Шикос!!))

Мои искренние извинения за проявленную тупость. Мне правда стыдно.

Alonez
06-02-2012, 12:03
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 входным параметром?

Kazun
06-02-2012, 12:30
param($path = "LDAP://dc=alonez,dc=local",$first, $last",$ou_name = "Test")

$SobjComputer = $SobjOU.Create("computer", "CN=$ou_name`_ws_$_")




© OSzone.net 2001-2012