我正在编写一个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
答案 0 :(得分:4)
最简单的方法是事先用LDAP浏览器直观地浏览AD(例如the one from Softerra,ADSIEdit from Microsoft或Active 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就是那个,但它在查询执行期间导致了一个未指定的错误。