Всем привет!
Сейчас пишу на vbs скрипт, которому необходимо поулчить одним запросом данные из нескольких OU (organizational units) в домене. Необходимо это для сортировки всех пользователей из заданых OU по фамилиям.
Наваял функцию которая умеет таскать данные из одной OU'шки:
Function LoadRecordSet ()
Const ADS_SCOPE_SUBTREE = 1
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Sort on") = "Name"
objCommand.CommandText = "SELECT Name FROM 'LDAP://ou=name1, ou=name2,dc=domain,dc=com' WHERE objectCategory='user'"
Set LoadRecordSet = objCommand.Execute
LoadRecordSet.MoveFirst
End Function
А вот как бы теперь сделать так, чтобы запрос делался не в 1 а в скажем 3-5-10 OU сразу.
Как вариант попробовал UNION :
objCommand.CommandText = "SELECT Name FROM 'LDAP://ou=name1, ou=name2,dc=domain,dc=com' WHERE objectCategory='user' UNION SELECT Name FROM 'LDAP://ou=name3, ou=name4,dc=domain,dc=com' WHERE objectCategory='user'"
Однако работать не хочет. Видимо надо искать другое решение.
Если у кого есть какие идеи- буду признателен.
Как вариант есть идея: возможно ли сделать несколько раздельных запросов и потом объединить их в 1 рекордсет в котором уже и выполнить сортировку?
Сейчас пишу на vbs скрипт, которому необходимо поулчить одним запросом данные из нескольких OU (organizational units) в домене. Необходимо это для сортировки всех пользователей из заданых OU по фамилиям.
Наваял функцию которая умеет таскать данные из одной OU'шки:
Function LoadRecordSet ()
Const ADS_SCOPE_SUBTREE = 1
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Sort on") = "Name"
objCommand.CommandText = "SELECT Name FROM 'LDAP://ou=name1, ou=name2,dc=domain,dc=com' WHERE objectCategory='user'"
Set LoadRecordSet = objCommand.Execute
LoadRecordSet.MoveFirst
End Function
А вот как бы теперь сделать так, чтобы запрос делался не в 1 а в скажем 3-5-10 OU сразу.
Как вариант попробовал UNION :
objCommand.CommandText = "SELECT Name FROM 'LDAP://ou=name1, ou=name2,dc=domain,dc=com' WHERE objectCategory='user' UNION SELECT Name FROM 'LDAP://ou=name3, ou=name4,dc=domain,dc=com' WHERE objectCategory='user'"
Однако работать не хочет. Видимо надо искать другое решение.
Если у кого есть какие идеи- буду признателен.
Как вариант есть идея: возможно ли сделать несколько раздельных запросов и потом объединить их в 1 рекордсет в котором уже и выполнить сортировку?