Войти

Показать полную графическую версию : [решено] Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка.


alex19451
05-03-2015, 22:37
Set objArgs = WScript.Arguments
if objArgs.Count = 0 then
WScript.Echo "Добавляет пользователей в домен."
WScript.Echo "create_users.vbs [имя файла]"
WScript.Echo " user.txt[имя файла] — файл со списком пользователей"
WScript.Echo " формат файла: Логин; Пароль; Имя-Отчество; Фамилия; Должность; Отдел; OU(Организация); Адрес папки профиля;"
WScript.Quit
end if
path = objArgs(0)

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 ' *** (OU)Организация
case 7
sScPath = 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 = FALSE

' ******** Имя *********
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 "pwdLastSet", CLng(0)

' Адрес папки перемещаемого профиля пользователя
objUser.Put "ProfilePath", sScPath

objUser.SetInfo

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

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

тхт файл выглядит так
manager4; 1qaz2WSX; Ivan Ivanovich; Ivanov; manager; management; ASOIU; \\WINSERVER\Profiles\manager4;
security3; 1qaz2WSX; Petr Petrovich; Petrov; security; security; SIB; \\WINSERVER\Profiles\security3;

Iska
06-03-2015, 00:00
alex19451, вопрос в чём?

alex19451
06-03-2015, 00:24
вопрос в чём? »
Почему не работает скрипт. Данный скрипт распространен в инете, ошибка 57 строке не знаю даже в чем. ОС Windows server 2012 r2. Может быть кто-то сталкивался с такой проблемой....

Iska
06-03-2015, 00:38
ошибка 57 строке не знаю даже в чем. »
В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.

Для начала Вам стоит избавиться от незначимых пробелов либо непосредственно в текстовом файле, либо убирать их при разборе текстового файла.

alex19451
06-03-2015, 10:03
В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.
Для начала Вам стоит избавиться от незначимых пробелов либо непосредственно в текстовом файле, либо убирать их при разборе текстового файла. »
Все пробелы убрал. Та же самая ошибка "Объект на сервере отсутствует". Строка 57 Символ 2

alex19451
06-03-2015, 11:57
Set objOU = GetObject("LDAP://OU=SIB,ASOIU" & ContainerDN) ставил так. выводит ошибку 80005000

Iska
06-03-2015, 13:49
alex19451, я пока пытаюсь привести кошмарный код к мало-мальски вменяемому виду.

Попробуйте так:
Option Explicit

Dim strSourceFile

Dim objFSO

Dim arrContent
Dim strLine
Dim arrRecord

Dim strDomainDNSName
Dim strDomainDN
Dim strContainerDN


If WScript.Arguments.Count = 1 Then
strSourceFile = WScript.Arguments.Item(0)

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
arrContent = Split(.ReadAll(), vbCrLf)

.Close
End With

strDomainDNSName = WScript.CreateObject("ADSystemInfo").DomainDNSName
strDomainDN = GetObject("LDAP://RootDSE").Get("DefaultNamingContext")

For Each strLine In arrContent
arrRecord = Split(strLine, ";")

If UBound(arrRecord) = 7 Then
strContainerDN = "ou=" & arrRecord(6) & "," & strDomainDN

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

' Создаем аккаунт пользователя домена
With GetObject("LDAP://" & strContainerDN).Create("User", "cn=" & arrRecord(0))
.Put "sAMAccountName", arrRecord(0) ' Login
.SetInfo
End With

With GetObject("LDAP://cn=" & arrRecord(0) & "," & strContainerDN)
.AccountDisabled = False ' Enable account
.SetPassword arrRecord(1) ' пароль

.Put "userPrincipalName", arrRecord(0) & "@" & strDomainDNSName ' UPN
.Put "givenName", arrRecord(2) ' Имя
.Put "sn", arrRecord(3) ' Фамилия
.Put "displayName", arrRecord(3) & " " & arrRecord(2) ' Выводимое имя
.Put "initials", _
Left(Split(arrRecord(2))(0), 1) & "." & _
Left(Split(arrRecord(2))(1), 1) & "." ' Инициалы
.Put "title", arrRecord(4) ' Должность
.Put "department", arrRecord(5) ' Отдел
.Put "Company", arrRecord(6) ' Организация

.Put "pwdLastSet", CLng(0) ' Уст. Требовать смену пароля при следующем входе в систему
.Put "ProfilePath", arrRecord(7) ' Адрес папки перемещаемого профиля пользователя

.SetInfo
End With

WScript.Echo "Пользователь — " & arrRecord(6) & " добавлен в AD"
Else
WScript.Echo "Line [" & strLine & "] has not 7 items."
End If
Next

WScript.Echo "Пользователи добавлены в AD"
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If

Set objFSO = Nothing
Else
WScript.Echo "Добавляет пользователей в домен."
WScript.Echo "create_users.vbs [имя файла]"
WScript.Echo " user.txt[имя файла] — файл со списком пользователей"
WScript.Echo " формат файла: Логин; Пароль; Имя-Отчество; Фамилия; Должность; Отдел; OU(Организация); Адрес папки профиля"

WScript.Quit 1
End If

WScript.Quit 0

Содержимое исходного файла:
manager4;1qaz2WSX;Ivan Ivanovich;Ivanov;manager;management;ASOIU;\\WINSERVER\Profiles\manager4
security3;1qaz2WSX;Petr Petrovich;Petrov;security;security;SIB;\\WINSERVER\Profiles\security3
Пробелы — значимые символы. В конце строки не надо ставить лишний разделитель «;».

alex19451
06-03-2015, 14:21
Все тоже самая ошибка на 40 строке. Скрипт который выше я взял из хабра. не уверен, что можно здесь ссылки указывать.

Iska
06-03-2015, 14:51
Все тоже самая ошибка на 40 строке. »
Покажите скриншот консоли AD «Пользователи и компьютеры», на котором будет видно, что Вы действительно создали в корне домена подразделения (OU) «ASOIU» и «SIB» из примера.

Скрипт который выше я взял из хабра. не уверен, что можно здесь ссылки указывать. »
Ссылки указывать можно, но особого смысла не вижу, исходный код попросту кошмарен.

alex19451
06-03-2015, 15:16
Ссылки указывать можно, но особого смысла не вижу, исходный код попросту кошмарен. »
http://habrahabr.ru/post/146980/ Вот ссылка.
https://www.dropbox.com/s/svbmo5ud60yf0q9/%D0%91%D0%B5%D0%B7%D11%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.jpg?dl=0

Iska
06-03-2015, 15:29
https://www.dropbox.com/s/svbmo5ud60...D0%B9.jpg?dl=0 »
В файле — «ASOIU», на скриншоте «ASPOIU».




© OSzone.net 2001-2012