none
Считывание групп пользователя с помощью LDAP-провайдера RRS feed

  • Общие обсуждения

  • Всем привет.

    Написал скрипт вывода информации о пользователе. Когда для получения объекта пользователя используется провайдер LDAP, при выводе информации о группах пользователя не выводятся стандартные доменные группы типа Domain Admins или Domain Users. Вот пример (на JScript):

     

    var objRootDSE = GetObject("LDAP://rootDSE");
    var RelativePath = "cn=user,cn=Users,"

    var objADUser = GetObject("LDAP://" + RelativePath + objRootDSE.Get("defaultNamingContext"));
    objADUser.GetInfo();

    var objEnum = new Enumerator(objADUser.Groups());
    while(!objEnum.atEnd())
    {
     var objGroup = objEnum.item();
     WScript.Echo(objGroup.Name + ". Class: " + objGroup.Class);
     objEnum.moveNext();
    }

     

    При работе данного скрипта выводится содержимое атрибута memberOf учетной записи, где не содержатся доменные группы.

     

    Когда же используешь провайдер NT, то все нормально:

    var objNTUser = GetObject("WinNT://POLAD/" + UserName + ",user"); 

    objNTUser.GetInfo();

    var objEnum = new Enumerator(objNTUser.Groups());
    while(!objEnum.atEnd())
    {
     var objGroup = objEnum.item();
     WScript.Echo(objGroup.Name);
     objEnum.moveNext();
    }

     

    Есть ли способо получить полный список групп, куда входит пользователь, используя провайдер LDAP ?

    Пока решил проблему созданием объектов двух типов в своем сценарии.

     

     

    18 июня 2008 г. 9:22

Все ответы

  •  

    Могу привести вам типовой скрипт от MS:

    Code Snippet

    Description
    Returns a list of all the Active Directory security groups (including the primary group) that include the MyerKen user account as a member.

     

     

     

    On Error Resume Next
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set objUser = GetObject _
        ("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
     
    intPrimaryGroupID = objUser.Get("primaryGroupID")
    arrMemberOf = objUser.GetEx("memberOf")
     
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "The memberOf attribute is not set."
    Else
        WScript.Echo "Member of: "
        For Each Group in arrMemberOf
            WScript.Echo Group
        Next
    End If
     
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"

    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = _
        ";(objectCategory=Group);" & _
            "distinguishedName,primaryGroupToken;subtree" 
    Set objRecordSet = objCommand.Execute
     
    Do Until objRecordset.EOF
        If objRecordset.Fields("primaryGroupToken") = intPrimaryGroupID Then
            WScript.Echo "Primary group:"
            WScript.Echo objRecordset.Fields("distinguishedName") & _
                " (primaryGroupID: " & intPrimaryGroupID & ")"
        End If
        objRecordset.MoveNext
    Loop
     
    objConnection.Close

     

     

     

     

     

    20 июня 2008 г. 10:35
    Модератор
  • Данный скрипт я видел, также как ADSI Scriptomatic.

    Результат его работы тот же самый, про который я и говорил. Ведь здесь тоже считывается аттрибут memberOf

     

    arrMemberOf = objUser.GetEx("memberOf")

     

    Данный атрибут не содержит стандартных доменных групп пользователя, а только вновь созданные группы. Т.е. группы типа Domain Users в свойствах пользователя данный скрипт не найдет

    20 июня 2008 г. 10:43
  • Запустил скрипт против своей учетки: он мне показал группу CN=Domain Admins,CN=Users,DC=MYDOMAIN - т.е. членство в стандартной группе.

    20 июня 2008 г. 10:53
    Модератор
  • Я тоже запустил этот скрипт против свой учетки и не увидел в списке групп Domain Admins.

    Возможно это связано с последствиями миграции в свое время с домена Windows NT 4.0

    21 июня 2008 г. 8:08
  •  Andrew Mishechkin написано:

     

    При работе данного скрипта выводится содержимое атрибута memberOf учетной записи, где не содержатся доменные группы.

     

     

    Это как? Атрибут memberOf должен содержать ссылки на все доменные группы пользователя, в том числе Domain Admins.

    23 июня 2008 г. 8:56
    Модератор
  • Сообщите, куда можно выслать скриншоты чтобы показать.

    Мне можно писать на andy_mishechkin@hotmail.com или на аську  101861332

    24 июня 2008 г. 4:58
  •  

    Скриншоты можно положить на любой доступный сайт, а тут дать ссылку.
    24 июня 2008 г. 7:07
    Модератор
  •  В memberof не содержится Primary Group
    26 февраля 2009 г. 11:13