Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка. (http://forum.oszone.net/showthread.php?t=296485)

alex19451 05-03-2015 22:37 2479363

Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка.
 
Код:

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 2479385

alex19451, вопрос в чём?

alex19451 06-03-2015 00:24 2479387

Цитата:

Цитата Iska
вопрос в чём? »

Почему не работает скрипт. Данный скрипт распространен в инете, ошибка 57 строке не знаю даже в чем. ОС Windows server 2012 r2. Может быть кто-то сталкивался с такой проблемой....

Iska 06-03-2015 00:38 2479391

Цитата:

Цитата alex19451
ошибка 57 строке не знаю даже в чем. »

В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.

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

alex19451 06-03-2015 10:03 2479465

Цитата:

Цитата Iska
В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.
Для начала Вам стоит избавиться от незначимых пробелов либо непосредственно в текстовом файле, либо убирать их при разборе текстового файла. »

Все пробелы убрал. Та же самая ошибка "Объект на сервере отсутствует". Строка 57 Символ 2

alex19451 06-03-2015 11:57 2479496

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

Iska 06-03-2015 13:49 2479564

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 2479593

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

Iska 06-03-2015 14:51 2479618

Цитата:

Цитата alex19451
Все тоже самая ошибка на 40 строке. »

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

Цитата:

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

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

alex19451 06-03-2015 15:16 2479625

Цитата:

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

http://habrahabr.ru/post/146980/ Вот ссылка.
https://www.dropbox.com/s/svbmo5ud60...D0%B9.jpg?dl=0

Iska 06-03-2015 15:29 2479633

Цитата:

Цитата alex19451
https://www.dropbox.com/s/svbmo5ud60...D0%B9.jpg?dl=0 »

В файле — «ASOIU», на скриншоте «ASPOIU».


Время: 05:27.

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