Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка.

Ответить
Настройки темы
VBS/WSH/JS - [решено] Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка.

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
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;

Отправлено: 22:37, 05-03-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:00, 06-03-2015 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:24, 06-03-2015 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 00:38, 06-03-2015 | #4


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 10:03, 06-03-2015 | #5


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:57, 06-03-2015 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Пробелы — значимые символы. В конце строки не надо ставить лишний разделитель «;».

Последний раз редактировалось Iska, 06-03-2015 в 14:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 06-03-2015 | #7


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось alex19451, 06-03-2015 в 14:26.


Отправлено: 14:21, 06-03-2015 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 14:51, 06-03-2015 | #9


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Ссылки указывать можно, но особого смысла не вижу, исходный код попросту кошмарен. »
http://habrahabr.ru/post/146980/ Вот ссылка.
https://www.dropbox.com/s/svbmo5ud60...D0%B9.jpg?dl=0

Последний раз редактировалось alex19451, 06-03-2015 в 15:32.


Отправлено: 15:16, 06-03-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Выдает ошибку "Такой объект на сервере отсутствует(80072030)". 57 строка.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - SwIron: shockwave flash выдает ошибку "память не может быть Read" Teonanakatl Microsoft Windows 2000/XP 3 27-10-2014 19:09
7 / 2008 R2 - WinSetupFromUSB выдает ошибку "WinPreSetup No Disk" SKSKSS Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 11 30-03-2014 12:45
Разное - Программа выдает ошибку "the machine id of your system cannot be determined" ~Cash~ Microsoft Windows 7 11 31-07-2012 23:04
Доступ - Отсутствует опция "Наследовать от родительского объекта применимые к дочерним объект" Tolyanchik Microsoft Windows 2000/XP 2 17-12-2010 15:58
Интерфейс - [решено] Пропала строка "Свойства папки" из выпадающего меню "Сервис" панели задач Стальное сердце Microsoft Windows 2000/XP 1 28-09-2007 11:26




 
Переход