ADsDSOObject查询:查询LDAP时可用的列?

时间:2011-01-25 21:05:02

标签: sql vbscript active-directory ldap

我正在编写一个VBScript来查询ADsDSOObject,我不太了解LDAP的结构。我看到如何在Active Directory中找到可用的虚拟表,但我找不到在哪里查找可用的虚拟列。

另外,如果我“SELECT * FROM”,它只返回ADsPath。我想从objectClass ='Computer'组中选择“Name”,“Type”和“Description”。

Dim objCompArr
Dim currcomp
objCompArr = Array()
currcomp = -1

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = "SELECT Name FROM 'LDAP://DC=mydomain,DC=com' WHERE objectClass = 'Computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
Set objRecordSet = objCommand.Execute

If Not objRecordSet.EOF Then
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        currcomp = currcomp + 1
        ReDim Preserve objCompArr(currcomp)
        objCompArr(currcomp) = objRecordSet.Fields("Name")
        objRecordSet.MoveNext
    Loop
End If

2 个答案:

答案 0 :(得分:4)

最简单的方法是事先用LDAP浏览器直观地浏览AD(例如the one from SofterraADSIEdit from MicrosoftActive Directory Explorer from Sysinternals)。

您将能够在那里看到对象的所有可用属性,并相应地制作您的查询。

姓氏称为sn,例如,名字为givenName,登录名为sAMAccountName,仅举几例。

您始终可以查询未设置(或甚至未定义)的属性。这不是错误,因为LDAP被设计为可扩展的,并不是每个对象都定义了每个属性。结果你就会得到空列。

答案 1 :(得分:0)

我在这里找到了答案:http://msdn.microsoft.com/en-us/library/ms680987%28v=vs.85%29.aspx#windows_2000_server_attributes

无论如何从该类中提取当前登录的用户?我认为Desktop-Profile就是那个,但它在查询执行期间导致了一个未指定的错误。