1

指定したユーザーの sAMAccountName を VBscript 経由で AD から取得するスクリプトを作成しましたが、自分の OU グループ内でのみ機能するようです。これは社内の権限制限によるものですか? または、これはコードに表示されていないことが原因ですか?

 Dim result
result = getsAMAccountName("Some Name")
msgbox result
Function getsAMAccountName(name)
Dim adoCommand, adoConnection, strBase, strFilter, strAttributes
Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strsAM, objUser

Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection

Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
msgbox strDNSDomain
strBase = "<LDAP://" & strDNSDomain & ">"

'be sure passed var usersel is referenced properly
strFilter = "(cn=" & name & ")"
strAttributes = "distinguishedName"

strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False

Set adoRecordset = adoCommand.Execute

Do Until adoRecordset.EOF

    strsAM = adoRecordset.Fields("distinguishedName").Value
    Set objUser = GetObject("LDAP://" & strsAM)
    getsAMAccountName = objUser.sAMAccountName
    adoRecordset.MoveNext
Loop

adoRecordset.Close
adoConnection.Close
End Function
4

2 に答える 2

0

LDAPプルをaspクラシックに移動するときは、必ずプロセスIDとPWを含める/指定してください...そしてaspクラシックを避けてください

Set adoConnection = CreateObject("ADODB.Connection")                
            adoConnection.Provider = "ADsDSOObject"
                With adoConnection
                    .Properties("User ID") = ' Process ID goes
                    .Properties("Password") = 'password
                    .Properties("encrypt password") = True
                End With

        adoConnection.Open "Active Directory Provider"
        Set adoCommand = CreateObject("ADODB.Command")
        Set adoCommand.ActiveConnection = adoConnection
于 2012-06-14T20:00:19.753 に答える
0

GetObject 呼び出しで OU を指定すると機能しますか?

GetObject("LDAP://OU=YourOU,DC=YourDomain,DC=com")

この質問からVBScriptを使用してActive Directoryを照会する

于 2012-06-11T22:13:09.133 に答える