1 (изменено: Vasai, 2012-12-09 00:41:00)

Тема: Создание учетных записей при помощи VBS в AD

нашел скрипт, но запустить не получается,  говорит отсутствует такой объект на сервере. вот отрывок этого кода

Set objRoot = GetObject(«LDAP://RootDSE»)
Set objADSystemInfo = CreateObject(«ADSystemInfo»)
DomainDNSName = objADSystemInfo.DomainDNSName
DomainDN = objRoot.Get(«DefaultNamingContext»)
ContainerDN = «ou=VBS» & Company & "," & DomainDN

pName = UserName & "@" & DomainDNSName '"@snb.local"

Set objOU = GetObject(«LDAP://» & ContainerDN)  ошибку выдает в этой строке, подскажи пожалуйста, что не так?

2

Re: Создание учетных записей при помощи VBS в AD

Убедитесь в том, что значение переменной ContainerDN представляет собой верный путь к указанному подразделению в структуре AD.
Проверьте, например, какое значение имеет переменная Company, все ли запятые-разделители в формируемом пути находятся на своих местах.

3

Re: Создание учетных записей при помощи VBS в AD

Vasai, можно узнать — зачем Вы меняли обычные кавычки на «ёлочки»? Специально для форума, чтобы не пользоваться тэгом «code»?

4 (изменено: Vasai, 2012-12-11 11:19:15)

Re: Создание учетных записей при помощи VBS в AD

Не знаю почему кавычки поменялись, но я использую обычные.
но с кодом все равно не могу понять, что не так, вроде все верно. но выдает ошибку в Set objOU = GetObject(«LDAP://» & ContainerDN)

Set fso = CreateObject(«Scripting.FileSystemObject»)
Set objFile = fso.OpenTextFile(path, 1)
Do Until objFile.AtEndOfStream
str = objFile.ReadLine 
for i = 1 to Len(str) step 1
strCh = Mid (str, i, 1)
if strCh = ";" then
select case Z
case 0 
UserName = strRez ' *** Логин
case 1 
UserPassword = strRez ' *** Пароль
case 2
FirstName = strRez ' *** Имя-Отчество
case 3 
LastName = strRez ' *** Фамилия
case 4 
Title = strRez ' *** Должность
case 5 
Department = strRez ' *** Отдел
case 6
Company = strRez ' *** Организация
'case 7
'Manager = strRez' *** Руководитель
'case 8
'OfficeRoom = strRez ' *** Комната
end select
strRez = ""
strCh = ""
Z = Z + 1 
else
strRez = strRez + strCh
end if
next
strRez = ""
strCh = ""
Z = 0

Set objRoot = GetObject(«LDAP://RootDSE»)
Set objADSystemInfo = CreateObject(«ADSystemInfo»)
DomainDNSName = objADSystemInfo.DomainDNSName
DomainDN = objRoot.Get(«DefaultNamingContext»)
ContainerDN = «ou=» & Company & "," & DomainDN

pName = UserName & "@" & DomainDNSName '"@snb.local"

Set objOU = GetObject(«LDAP://» & ContainerDN) 

Вот так заполнен файл
User; qwerty; User; 1;Пробный; Отдел1; Проверка;

5

Re: Создание учетных записей при помощи VBS в AD

Vasai пишет:

... Вот так заполнен файл
User; qwerty; User; 1;Пробный; Отдел1; Проверка;

Похоже, ваша проблема - в пробелах.
Простой опыт даёт такой результат: ou= Проверка,DC=domain,DC=local
А должно быть: ou=Проверка,DC=domain,DC=local
Видите разницу?

6 (изменено: Vasai, 2012-12-11 18:13:23)

Re: Создание учетных записей при помощи VBS в AD

Да, я понял вас, исправил но ничего не изменилось, все равно выдает ошибку без описания, в той же строчке
нигде не надо указывать OU в самом скрипте ? если он в файле 
и запускаю через БАТ файл, D:\script.vbs "User.txt" так правильно?

Скрипт брал тут, http://habrahabr.ru/post/146980/ может, что то не так понял

7

Re: Создание учетных записей при помощи VBS в AD

а что ви будете делать с "Кавычками" ?

Я конечно далек от мысли... (с)

8

Re: Создание учетных записей при помощи VBS в AD

smaharbA, вменяемый, подчёркиваю — вменяемый, вопрос можно задать здесь: Script-Coding.com community.

9

Re: Создание учетных записей при помощи VBS в AD

Vasai пишет:

... все равно выдает ошибку без описания, в той же строчке...

Покажите окно с этим сообщением.

Vasai пишет:

... нигде не надо указывать OU в самом скрипте ? если он в файле...

Вопрос не понят.
 

Vasai пишет:

... запускаю через БАТ файл, D:\script.vbs "User.txt" так правильно?..

Это зависит от того, каков полный код используемого Вами варианта сценария (кстати, давно пора бы его привести).
Если же полный код представляет собой то, что приведено в сообщении #4, то неправильно. Более того, в том коде отсутствует оператор Loop, замыкающий цикл.

10

Re: Создание учетных записей при помощи VBS в AD

Ошибка
Сценарий: D\script\script_2.vbs
Строка:60
Символ:1
Ошибка: 0x80005000
Код:80005000
Источник  (null)
Вот весь код

Set objArgs = WScript.Arguments
'if objArgs.Count = 0 then
WScript.Echo "Добавляет пользователей в домен."
'WScript.Echo "add_to_ad.vbs [Имя файла]"
'WScript.Echo " [имя файла] — файл со списком пользователей"
'WScript.Echo " формат файла: Логин; Пароль; Имя-Отчество; Фамилия; Должность; Отдел; Организация;"
'WScript.Quit
'end if
'path = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.OpenTextFile("Users.txt", 1)
    WScript.Echo "FILE open"
Do Until objFile.AtEndOfStream
    str = objFile.ReadLine 
for i = 1 to Len(str) step 1
    strCh = Mid (str, i, 1)
if strCh = ";" then
select case Z
case 0 
UserName = strRez ' *** Логин
case 1 
UserPassword = strRez ' *** Пароль
case 2
FirstName = strRez ' *** Имя-Отчество
case 3 
LastName = strRez ' *** Фамилия
case 4 
Title = strRez ' *** Должность
case 5 
Department = strRez ' *** Отдел
case 6
Company = strRez ' *** Организация
'case 7
'Manager = strRez' *** Руководитель
'case 8
'OfficeRoom = strRez ' *** Комната
end select
    strRez = ""
    strCh = ""
    Z = Z + 1 
else
    strRez = strRez + strCh
end if
next
strRez = ""
strCh = ""
Z = 0

Set objRoot = GetObject("LDAP://RootDSE")
Set objADSystemInfo = CreateObject("ADSystemInfo")
    DomainDNSName = objADSystemInfo.DomainDNSName
    DomainDN = objRoot.Get("DefaultNamingContext")
    ContainerDN = "ou=," & Company & "," & DomainDN

pName = UserName & "@" & DomainDNSName '"@snb.local"

'!!! ВАЖНО !!!***Указываем ЗАРАНЕЕ СОЗДАННУЮ OU в которую кидаются новые пользователи *******

Set objOU = GetObject("LDAP://" & ContainerDN) 

'*************************** Создаем учетку пользователя домена ***********************
Set objUser = objOU.Create("User", "cn=," + UserName)
' **** Login *****
objUser.Put "sAMAccountName", UserName
objUser.SetInfo

' ****** пароль *******
Set objUser = GetObject ("LDAP://cn=," + UserName + "," + ContainerDN)
objUser.SetPassword UserPassword

' ******* UPN **********
objUser.Put "userPrincipalName", pName

'****** выключение аккаунта *******
objUser.AccountDisabled = TRUE

' ******** Имя *********
objUser.Put "givenName", FirstName

' ***** Фамилия *********
objUser.Put "sn", LastName

' ***** Выводимое имя ******
objUser.Put "displayName", LastName & " " & FirstName

' Инициалы 
objUser.Put "initials", left(FirstName,1) & "." '& left(LastName,1)

' ***** Должность ******
objUser.Put "title", Title

' ***** Отдел ******
objUser.Put "department", Department

' Организация

objUser.Put "Company", Company

' Руководитель
'objUser.Put«manager», Manager

' комната
'objUser.Put «physicalDeliveryOfficeName», OfficeRoom

' ***** Уст. Требовать смену пароля при следующем входе в систему ***
objUser.Put "pwdLastSet", CLng(0)

objUser.SetInfo

' WScript.Echo «Пользователь — » + UserName + " добавлен в AD"

Loop
WScript.Echo "Пользователи добавлены в AD"
objFile.Close

11

Re: Создание учетных записей при помощи VBS в AD

ContainerDN = "ou=," & Company & "," & DomainDN

Запятая, выделенная красным цветом, не нужна.

12

Re: Создание учетных записей при помощи VBS в AD

а с Кавычками вменяемыми что Вы станете делать ?

Я конечно далек от мысли... (с)

13

Re: Создание учетных записей при помощи VBS в AD

Спасибо за помощь и понятное объяснение все получилось. Были глупые ошибки которые не замечал.