开发者

vbscript, validate a user is in active directory by schema attribute

开发者 https://www.devze.com 2023-03-25 06:54 出处:网络
I\'m trying to write a vb script that prompts a user for a schema attribute which I\'ll call bID and checks that the person with that bID is in active directory.I really have no idea how to get starte

I'm trying to write a vb script that prompts a user for a schema attribute which I'll call bID and checks that the person with that bID is in active directory. I really have no idea how to get started, there are plenty of examples on how to query active directory users but I havent found a good one regarding checking against specific attributes. Any help/suggestions are greatly appreciated!

UPDATE: ok heres my code so far, doesnt error out and returns 0, but I dont get a wscript.echo of the distinguished name for some reason. I included a few debugging wscript.echo's and it seems to never get into the while loop. Any ideas?

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.Co开发者_StackOverflowmmand")    
    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


Here's some vbscript that will find all users with bID=FooVal and write their DN out

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
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号