|
|
|
новичок
      
участник
Last Login: 19.09.2002 13:19
Сообщ.: 2,
Visits: 23
|
|
надо для себя, как администратора, сделать страничку, которая позволяла бы считывать состав группы пользователей из AD и добавлять/удалять из этой группы пользователей. я понимаю, что для этого надо использовать adsi, но так как раньше подобным (то есть с AD) не занимался, то хочется увидеть работающие примеры подобного кода на ASP или ASP.NET
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.02.2005 5:44
Сообщ.: 669,
Visits: 7 360
|
|
Если разберешься, (я сам уже с трудом разбираюсь чего я тут понаписал :)) - давно это было) то вот такой код 100% рабочий, пользуюсь каждую неделю почти.
<%@ Language=VBScript %> <%Response.Buffer=false on error resume next '//////////////////////////////////////////////////////////////////////////// 'служебная страница для перевода информации о персонах их Active Directory 'в базу данных '//////////////////////////////////////////////////////////////////////////
'Соединяемся с базой данных Dim connIntranet,rsIntranet,rsIntranet1 set connIntranet=Server.CreateObject ("ADODB.Connection")
'открываем объект connIntranet.Open "Provider=sqloledb;Data Source=MORPHEUS\ONTARIO;Initial Catalog=intranet;User Id=Dima;Password=;"
set rsIntranet=Server.CreateObject ("ADODB.Recordset") set rsIntranet1=Server.CreateObject ("ADODB.Recordset")
'соединяемся с ActiveDirectory set connAD=server.CreateObject("adodb.connection") connAD.provider="ADsDSOObject" connAD.open "ADSI"
set rsAD=server.CreateObject("adodb.recordset") rsAD.open "'LDAP://neo.gskaudit.spb.ru/OU=Группа КУБ,DC=gskaudit,DC=spb,DC=ru' where objectCategory='user'",connAD Dim user_exists_in_db user_exists_in_db=false
do while rsAD.EOF=false 'цикл по всем групам в AD set user=GetObject(rsAD(0)) 'получим объект типа group
rsIntranet.Open "SELECT * FROM tblPersons WHERE login_name='" & user.samaccountname & "'",connIntranet if rsIntranet.BOF=true and rsIntranet.EOF=true then 'user-а нет в базе данных department_id=-1 'вытаскиваем id депарамента из базы rsIntranet1.Open "SELECT * FROM tblDepartments",connIntranet do while rsIntranet1.EOF if Instr(1,user.distinguishedname,rsIntranet("ad_object"))<>0 then department_id=rsIntranet("department_id") end if rsIntranet.MoveNext () loop rsIntranet1.Close() 'добавляем user-a в базу Dim strSQL connIntranet.Execute "execute new_person " & department_id & ",'" & user.samaccountname & "','" & user.distinguishedname & "','" & user.fullname & "'" connIntranet.Execute "INSERT INTO tblNews (division_id,author_id,header,published_at) VALUES (5,164,'В нашей компании появился новый сотрудник - " & user.fullname & "',GETDATE())" Dim newsID rsIntranet.Open "SELECT @@IDENTITY",connIntranet newsID=rsIntranet(0) rsIntranet.Close()
'регистрируем область действия новости 'для данной новости - это Группа КУБ connIntranet.Execute "INSERT INTO tblNewsDepartments (news_id,department_id)" & _ " VALUES (" & newsID & ",12)" Response.Write "Пользователь <b>" & user.samaccountname & "</b>" & "добавлен в базу <BR>" else 'user есть в базе данных end if rsIntranet.Close() rsAD.MoveNext () loop
%>
|
|
|
|
|
новичок
      
участник
Last Login: 19.09.2002 13:19
Сообщ.: 2,
Visits: 23
|
|
| спасибо, сейчас попробую...
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| в строке 'LDAP://neo.gskaudit.spb.ru/OU=Группа КУБ,DC=gskaudit,DC=spb,DC=ru' что такое "OU", "DC" и пр.? Можешь подробнее подсказать?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.02.2005 5:44
Сообщ.: 669,
Visits: 7 360
|
|
DC - domain controller OU - organizational unit
|
|
|
|