powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт из AD через LDAP на ASP
1 сообщений из 1, страница 1 из 1
Экспорт из AD через LDAP на ASP
    #34942691
andron123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Делаю экспорт юзеров из AD, через wsh-скрипт руками запускаю - работает, хочу на asp-страницу перевести на том же сервере - не работает, ошибка всегда одна - 80040e37|Таблица_не_существует.
В инете везде пишут, что проблема в синтаксисе обращения к LDAP, но проблема не в этом, т.к. скрипт wsh отрабатывает корректно.
Неужели проблема в правах? Руками запускаю от имени доменного пользователя, а IIS (который в итоге и запускает мой asp) от системной учетной записи запущен неконтроллера домена. Что делать в таком случае? И почему ошибка не про доступ, а про ненайденную таблицу?

Вот WSH код, который работает:

Option Explicit
Const ADS_SCOPE_SUBTREE = 2
Const ForAppending = 8
Const ForWriting = 2
Dim objConn
Dim objCommand
Dim objRS
Dim objUser
Dim objFso, objF
Dim objRootDSE
Dim str
Dim i
Set objConn = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objRootDSE = GetObject("LDAP://rootDSE")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConn
objCommand.CommandText = "Select AdsPath, cn from 'LDAP://" & objRootDSE.Get("defaultNamingContext") & _
"' Where objectCategory = 'person' and objectClass='user'"
WScript.Echo CStr(objRootDSE.Get("defaultNamingContext"))
objCommand.Properties("Page Size") = 10000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRS = objCommand.Execute
objRS.MoveFirst
Set objF = objFso.OpenTextFile("users.txt", ForWriting, True)
objF.Write ""
objF.Close
Set objF = objFso.OpenTextFile("users.txt", ForAppending, True)
WScript.Echo "Export started"
WScript.Echo
WScript.Echo "Total users: " & CStr(objRS.RecordCount)
WScript.Echo
WScript.Echo "Please wait ..."
WScript.Echo
On Error Resume Next
i = 0
Do Until objRS.EOF
Set objUser = GetObject(objRS.Fields("AdsPath").Value)
i = i + 1
str = "Login=" & objUser.Get("sAMAccountName") & vbCrLf
str = str & "Description=" & objUser.Description & vbCrLf
str = str & "Phone=" & objUser.TelephoneNumber & vbCrLf
str = str & "Email=" & objUser.EmailAddress & vbCrLf
str = str & "Department=" & objUser.Department & vbCrLf
str = str & "Office=" & objUser.OfficeLocations & vbCrLf
str = str & "GUID=" & objUser.Guid & vbCrLf
If objUser.AccountDisabled Then
str = str & "Account disabled" & vbCrLf
End If
str = str & "LastName=" & objUser.LastName & vbCrLf
str = str & "FirstName=" & objUser.FirstName & vbCrLf
str = str & "PasswordLastChanged=" & CStr(objUser.PasswordLastChanged) & vbCrLf
str = str & "========================================" & vbCrLf
objF.Write str
objRS.MoveNext
Loop
WScript.Echo "Finished"
WScript.Echo
objF.Close
objRS.Close
objConn.Close
Set objCommand = Nothing
Set objRS = Nothing
Set objConn = Nothing
Set objF = Nothing
Set objFso = Nothing

Вот asp-код, который валится с той ошибкой:
<%
Const ADS_SCOPE_SUBTREE = 2
Const ForAppending = 8
Const ForWriting = 2
Dim objConn
Dim objCommand
Dim objRS
Dim objUser
Dim objFso, objF
Dim objRootDSE
Dim str
Dim i
Set objConn = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objRootDSE = GetObject("LDAP://rootDSE")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConn
objCommand.CommandText = "Select AdsPath, cn from 'LDAP://" & objRootDSE.Get("defaultNamingContext") & "' Where objectCategory = 'person' and objectClass='user'"
objCommand.Properties("Page Size") = 10000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRS = objCommand.Execute
objRS.MoveFirst
Set objF = objFso.OpenTextFile("users.txt", ForWriting, True)
objF.Write ""
objF.Close
Set objF = objFso.OpenTextFile("users.txt", ForAppending, True)
Response.Write "Export started"
Response.Write " "
Response.Write "Total users: " & CStr(objRS.RecordCount)
Response.Write " "
Response.Write "Please wait ..."
Response.Write " "
On Error Resume Next
i = 0
Do Until objRS.EOF
Set objUser = GetObject(objRS.Fields("AdsPath").Value)
i = i + 1
str = "Login=" & objUser.Get("sAMAccountName") & vbCrLf
str = str & "Description=" & objUser.Description & vbCrLf
str = str & "Phone=" & objUser.TelephoneNumber & vbCrLf
str = str & "Email=" & objUser.EmailAddress & vbCrLf
str = str & "Department=" & objUser.Department & vbCrLf
str = str & "Office=" & objUser.OfficeLocations & vbCrLf
str = str & "GUID=" & objUser.Guid & vbCrLf
If objUser.AccountDisabled Then
str = str & "Account disabled" & vbCrLf
End If
str = str & "LastName=" & objUser.LastName & vbCrLf
str = str & "FirstName=" & objUser.FirstName & vbCrLf
str = str & "PasswordLastChanged=" & CStr(objUser.PasswordLastChanged) & vbCrLf
str = str & "========================================" & vbCrLf
objF.Write str
objRS.MoveNext
Loop
Response.Write "Finished"
Response.Write " "
objF.Close
objRS.Close
objConn.Close
Set objCommand = Nothing
Set objRS = Nothing
Set objConn = Nothing
Set objF = Nothing
Set objFso = Nothing
%>
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт из AD через LDAP на ASP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]