Компьютерный форум 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=225663)

Alonez 19-01-2012 13:32 1839530

Как создавать несколько за раз ПК в 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?)

Kazun 19-01-2012 13:42 1839537

Код:

$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 1839797

Спасибо большое, очень помогли!)

Alonez 20-01-2012 11:55 1840243

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

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

Kazun 20-01-2012 12:34 1840260

1) 7..15 | foreach {"$_".padleft(2,"0")}
2) второй вопрос я не понял

Alonez 20-01-2012 12:51 1840268

Спасибо)

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

Kazun 20-01-2012 12:54 1840272

Зачем его создавать,когда оно автоматически создается при присоединении компьютера к домену.

Alonez 24-01-2012 12:03 1843255

Пункт следующий:

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

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


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 1843270

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

Alonez 31-01-2012 09:09 1848122

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

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

Kazun 31-01-2012 10:44 1848173

Код:

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

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

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

Alonez 31-01-2012 11:12 1848206

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

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

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

Kazun 31-01-2012 11:17 1848213

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

CrPC $path $first $last

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

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

Alonez 31-01-2012 12:15 1848264

Вложений: 1
Вообще перестал чтото понимать***


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

Kazun 31-01-2012 12:33 1848282

В таком виде функция не выполнится,для этого изменить скрипт на:

Код:

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 1848340

изменил скрипт. ввод .\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 1848352

.\crpc -path "LDAP://OU=comp,OU=in,dc=alonez,dc=local" -first 7 -last 9

Alonez 01-02-2012 10:01 1849062

Шикос!!))

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

Alonez 06-02-2012 12:03 1852750

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 1852768

param($path = "LDAP://dc=alonez,dc=local",$first, $last",$ou_name = "Test")

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

Alonez 01-03-2012 10:06 1869838

Вопрос следующий: как задавать условия для входных параметров? Ну к примеру, чтоб если число "фёрст" меньше "ласт", или какоето из них отрицательное, скрпит не выполнялся, а выдавал "ошибка"?

Kazun 01-03-2012 12:45 1869966

Код:

if ($first -lt $last -and $first -ge 0 -and $last -gt 0) {
        "КОД"
}

else {
        Write-Error "Ошибка"
}



Время: 21:21.

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