SCCM 2007 R2 - Создание коллекции по членству компьютеров в OU

imageОчередная задача потребовала создания коллекции компьютеров в 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"

)

 

Добавить комментарий