Очередная задача потребовала создания коллекции компьютеров в SCCM с условием зависящим принадлежности этих компьютеров к конкретному доменному контейнеру/OU. Для начала стоит отметить то, что для того чтобы можно было делать выборки по OU в свойствах сайта SCCM должен быть включен и настроен метод обнаружения Active Directory System Group Discovery который в частности отвечает за сбор информации об OU в домене. Этот метод собирает информацию в дополнение к информации собранной методом обнаружения - Active Directory System Discovery.
Создать коллекцию компьютеров с выборкой компьютеров только из определённого OU довольно просто. Вот типичный пример запроса для такой коллекции:
SELECT
SMS_R_SYSTEM.ResourceID,
SMS_R_SYSTEM.ResourceType,
SMS_R_SYSTEM.Name,
SMS_R_SYSTEM.SMSUniqueIdentifier,
SMS_R_SYSTEM.ResourceDomainORWorkgroup,
SMS_R_SYSTEM.Client
FROM
SMS_R_System
WHERE
SMS_R_System.SystemOUName like "HOLDING.COM/OU1/OU2/OU3/OU4"
В такую коллекцию попадут все компьютеры которые расположены в соответствующем OU, указанном в формате атрибута canonicalName.
Если же требуется сделать выборку обратного характера, то есть включить в коллекцию все компьютеры за исключением тех которые расположены в указанном OU, то вы можете столкнуться с ситуацией когда обратный оператор сравнения not like не даст желаемого результата. Если открыть в консоли SCCM свойства любого доменного клиента можно увидеть что данные об OU представлены в виде некоего массива строк, типа:
System OU Name[0] = HOLDING.COM/OU1
System OU Name[1] = HOLDING.COM/OU1/OU2
System OU Name[2] = HOLDING.COM/OU1/OU2/OU3
System OU Name[3] = HOLDING.COM/OU1/OU2/OU3/OU4
И для того чтобы выполнить выборку обратного характера потребуется примерно такой запрос:
SELECT
SMS_R_System.ResourceId,
SMS_R_System.ResourceType,
SMS_R_System.Name,
SMS_R_System.SMSUniqueIdentifier,
SMS_R_System.ResourceDomainORWorkgroup,
SMS_R_System.Client
FROM
SMS_R_System
WHERE SMS_R_System.SystemOUName not in (
"HOLDING.COM/OU1",
"HOLDING.COM/OU1/OU2",
"HOLDING.COM/OU1/OU2/OU3",
"HOLDING.COM/OU1/OU2/OU3/OU4"
)
Вот ещё простой примера запроса с комбинированием условий:
- Выбрать все компьютеры имя которых начинается на WS и NB
- В выборку не должны попасть компьютеры расположенные в указанном OU
SELECT
SMS_R_SYSTEM.ResourceID,
SMS_R_SYSTEM.ResourceType,
SMS_R_SYSTEM.Name,
SMS_R_SYSTEM.SMSUniqueIdentifier,
SMS_R_SYSTEM.ResourceDomainORWorkgroup,
SMS_R_SYSTEM.Client
FROM
SMS_R_System
WHERE
(
SMS_R_System.NetbiosName like "WS%"
or
SMS_R_System.NetbiosName like "NB%"
)
and
SMS_R_System.SystemOUName not in
(
"HOLDING.COM/OU1",
"HOLDING.COM/OU1/OU2",
"HOLDING.COM/OU1/OU2/OU3",
"HOLDING.COM/OU1/OU2/OU3/OU4"
)
Добавить комментарий