Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


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

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


Aynyuh, пара советов по коду сценария из сообщения #7.

1. В функции DistinguishedToPath() нет необходимости, т.к. значение, которое Вы называете "обычный путь",- это значение атрибута Canonical-Name. Его легко получить непосредственно в ADO-запросе.
Пример:
Код: Выделить весь код
Const C_OUT_FIELDS = "samAccountName,displayName,distinguishedName,canonicalName;"
objCommand.CommandText = _
  "<LDAP://DC=test,DC=local>;(&(objectCategory=person)" & _
       C_SRCH_FIELD & samAccountName & "));" & _
       C_OUT_FIELDS & _
       C_SRCH_METHOD
Dim objRecordSet
Set objRecordSet = objCommand.Execute
If objRecordset.RecordCount > 0 Then
    objRecordSet.MoveFirst
    If IsArray(objRecordSet.Fields(3)) Then
        arrTemp = objRecordSet.Fields(3)
        MsgBox "Каноническое имя: " & arrTemp(0)
    Else
        MsgBox "Каноническое имя: " & objRecordSet.Fields(3)
    End If
End If
2. Имя текущего домена в формате DistinguishedName можно получить с помощью объекта RootDSE.
Пример:
Код: Выделить весь код
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("defaultNamingContext")
Set objRootDSE = Nothing
'...
objCommand.CommandText = _
  "<LDAP://" & strDomain & ">;(&(objectCategory=person)" & _
       C_SRCH_FIELD & samAccountName & "));" & _
       C_OUT_FIELDS & _
       C_SRCH_METHOD
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:55, 06-03-2012 | #9