 |
|
Выдает ошибку "Такой объект на сервере отсутствует(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;
|
Почему не работает скрипт. Данный скрипт распространен в инете, ошибка 57 строке не знаю даже в чем. ОС Windows server 2012 r2. Может быть кто-то сталкивался с такой проблемой....
|
Цитата:
Цитата alex19451
ошибка 57 строке не знаю даже в чем. »
|
В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.
Для начала Вам стоит избавиться от незначимых пробелов либо непосредственно в текстовом файле, либо убирать их при разборе текстового файла.
|
Цитата:
Цитата Iska
В том, что указанный объект не существует/не может быть найден в каталоге. Потому и ошибка.
Для начала Вам стоит избавиться от незначимых пробелов либо непосредственно в текстовом файле, либо убирать их при разборе текстового файла. »
|
Все пробелы убрал. Та же самая ошибка "Объект на сервере отсутствует". Строка 57 Символ 2
|
Set objOU = GetObject("LDAP://OU=SIB,ASOIU" & ContainerDN) ставил так. выводит ошибку 80005000
|
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
Пробелы — значимые символы. В конце строки не надо ставить лишний разделитель «;».
|
Все тоже самая ошибка на 40 строке. Скрипт который выше я взял из хабра. не уверен, что можно здесь ссылки указывать.
|
Цитата:
Цитата alex19451
Все тоже самая ошибка на 40 строке. »
|
Покажите скриншот консоли AD «Пользователи и компьютеры», на котором будет видно, что Вы действительно создали в корне домена подразделения (OU) «ASOIU» и «SIB» из примера.
Цитата:
Цитата alex19451
Скрипт который выше я взял из хабра. не уверен, что можно здесь ссылки указывать. »
|
Ссылки указывать можно, но особого смысла не вижу, исходный код попросту кошмарен.
|
Цитата:
Цитата alex19451
https://www.dropbox.com/s/svbmo5ud60...D0%B9.jpg?dl=0 »
|
В файле — «ASOIU», на скриншоте «AS POIU».
|
Время: 05:27.
© OSzone.net 2001-