vbscript, проверка пользователя в активном каталоге по атрибуту схемы - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь написать скрипт vb, который запрашивает у пользователя атрибут схемы, который я назову bID, и проверяет, что человек с таким bID находится в активном каталоге. Я действительно понятия не имею, с чего начать, есть множество примеров того, как запрашивать пользователей активных каталогов, но я не нашел хорошего в отношении проверки определенных атрибутов. Любая помощь / предложения с благодарностью!

UPDATE: Хорошо, пока мой код, не выдает ошибку и возвращает 0, но я почему-то не получаю wscript.echo отличительного имени. Я включил несколько отладочных wscript.echo, и похоже, что они никогда не попадают в цикл while. Есть идеи?

Option Explicit

GetUsers "CN=users,DC=example,DC=example,DC=example,DC=com","123456"

Function GetUsers(domainNc, ID)
    Dim cnxn    
    Set cnxn = WScript.CreateObject("ADODB.Connection")    
    cnxn.Provider = "ADsDSOObject"    
    cnxn.Open "Active Directory Provider"    
    Dim cmd    
    Set cmd = WScript.CreateObject("ADODB.Command")    
    cmd.ActiveConnection = cnxn    
    cmd.CommandText = "<LDAP://" & domainNc & ">;(&(objectCategory=user)(objectClass=user)    (employeeNumber=" & ID & "));distinguishedName;subtree"
    WScript.Echo cmd.CommandText
    cmd.Properties("Page Size") = 100    
    cmd.Properties("Timeout") = 30    
    cmd.Properties("Cache Results") = False    
    WScript.Echo "setting cmd.properties"
    Dim rs
    Set rs = cmd.Execute
    WScript.Echo "rs object set"
    While Not rs.eof
        On Error Resume Next
        WScript.Echo "while loop start"
        Wscript.Echo rs.fields("distinguishedName".Value)
        rs.MoveNext
        If (Err.Number <> 0) Then       
     WScript.Echo vbCrLf& "Error # "& CStr(Err.Number)& " "& Err.Description
        Else
      On Error GoTo 0
        End If 
    Wend
    WScript.Echo "while loop end"
    rs.close    
    WScript.Echo "rs object closed"
    cnxn.Close    
    Set rs = Nothing    
    Set cmd = Nothing    
    Set cnxn = Nothing 
    End Function

1 Ответ

0 голосов
/ 04 августа 2011

Вот некоторый vbscript, который найдет всех пользователей с bID = FooVal и запишет их DN

Function GetUsers(domainNc, bIdVal)
    Dim cnxn
    Set cnxn = WScript.CreateObject("ADODB.Connection")
    cnxn.Provider = "ADsDSOObject"
    cnxn.Open "Active Directory Provider"

    Dim cmd
    Set cmd = WScript.CreateObject("ADODB.Command")
    cmd.ActiveConnection = cnxn

    cmd.CommandText = "<LDAP://" & domainNc & ">;(&(objectCass=user)(objectCategory=person)(bid=" & bidVal & "));distinguishedName;subtree"
    cmd.Properties("Page Size") = 100
    cmd.Properties("Timeout") = 30
    cmd.Properties("Cache Results") = False

    Dim rs
    Set rs = cmd.Execute

    While Not rs.eof 
        Wscript.Echo rs.fields("distinguishedName").Value

        rs.MoveNext
    Wend 

    rs.close
    cnxn.Close

    Set rs = Nothing
    Set cmd = Nothing
    Set cnxn = Nothing 
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...