I have a weird problem querying AD for computer accounts.
I am trying to query AD for any computer in any OU that contains "server" in
the name of the OU.
EG: CN=cdecitrix9,OU=CAN,OU=!Citrix,OU=Servers,DC=MyDomain,DC=com
CN=abccwrk1,OU=CAN,OU=Servers,DC=MyDomain,DC=com
We have several nested OU's that I need to enumerate.
Here code that searches the "name" attribute of AD computers:
'<><><><><><><><><><><><><><><><><><><><><><>
Const ADS_SCOPE_SUBTREE = 2
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 distinguishedName,Name from
'LDAP://DC=MyDomain,DC=com' where objectClass='computer' and name =
'*MyComp*'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
Loop
'<><><><><><><><><><><><><><><><><><><><><><>
The above looks (starting at the root of the domain) for computers that have
the string "MyComp" somewhere in their name. The above script works as
expected.
If I change the query command to:
objCommand.CommandText = "Select distinguishedName,Name from
'LDAP://DC=MyDomain,DC=com' where objectClass='computer' and
distinguishedName = '*MyComp*'"
It doesn't work. You would think "distinguishedName" would return the same
set of computers but it only returns and empty data set.
Any ideas?
Thanks,
Dan