vbscript: пользовательский фильтр LDAP запрашивает поиск всех компьютеров в домене, но исключая OU или 2 - PullRequest
0 голосов
/ 11 января 2011

Когда я бегу:

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

strFilter = "(&(objectClass=computer))"

strAttributes = "name,distinguishedName"

strQuery = strDomainDN & ";" & strFilter & ";" & strAttributes & ";subtree"

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 9999
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strADObjects = strADObjects & objRecordSet.Fields("Name").Value & vbCrLf
    'Wscript.Echo "Location: " & objRecordSet.Fields("DistinguishedName").Value
    objRecordSet.MoveNext
Loop

мой запрос работает как чемпион, но когда я пытаюсь отфильтровать определенную OU, скрипт либо выдает ошибку, либо вообще ничего не исключает Я пробовал много разных вариантов внутри strFilter. Есть ли способ, которым вы можете запросить весь домен для всех компьютеров, но исключая результаты из определенного подразделения? ... или OUs ??? Я пробовал:

strFilter = "(&(objectClass=computer) (!(distinguishedName=*,OU=Computers,DC=mydomain,DC=myTLD)))"
strFilter = "(&(objectClass=computer) (!distinguishedName=*,OU=Computers,DC=mydomain,DC=myTLD))"
strFilter = "(&(objectClass=computer) (!(OU=Computers,DC=mydomain,DC=myTLD)))"
strFilter = "(&(objectClass=computer) (!OU=Computers,DC=mydomain,DC=myTLD))"

Может кто-нибудь предложить какие-нибудь указатели на то, где я могу все испортить? ТИА ~!

Редактировать: Также найдено и опробовано, но без работы:

(&(!(ou:dn:=Computers))(objectClass=Computer))

1 Ответ

0 голосов
/ 12 января 2011

Неважно, это, очевидно, не может быть сделано.Моя первая пара попыток не сработает, потому что приписываемое свойство difishedName является составным значением, которое означает, что оно не может быть использовано для фильтрации и не работает с подстановочными знаками.Мой ответ был найден в Hey Scripting Guy!блоги:

http://blogs.technet.com/b/heyscriptingguy/archive/2004/12/07/how-can-i-return-a-list-of-all-my-computers-except-those-in-a-specified-ou.aspx

Короче говоря, вы не можете сделать это с фильтрацией LDAP, вы должны вернуть весь набор результатов и затем использовать собственный фильтр (vbscript и т. д.)по результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...