SCCM / WMI запит для вибірки всіх ноутбуків в домені

Для розстановки спеціалізованого ПЗ на всі переносні пристрої компанії потрібна була необхідність побудови групи комп'ютерів або SCCM колекції, яка б включала в себе всі ноутбуки (і інші переносні мобільні системи), що працюють в корпоративній мережі. Завдання виявилося не так проста, як здається на перший погляд. Мені відразу не вдалося знайти властивість системи, яка б однозначно визначало комп'ютер як ноутбук або десктоп.

Для початку спробував відфільтрувати мобільні комп'ютери за допомогою WMI фільтрів GPO, і призначити на них установку ПО за допомогою групових політик. Було кілька варіантів складання WMI запитів шляхом перевірки:

  • статусу батареї (вона є тільки у ноутбуків): SELECT * FROM Win32_Battery WHERE (BatteryStatus 0)
  • типу оперативної пам'яті (SODIMM для ноутбуків): Select * from Win32_PhysicalMemory WHERE (FormFactor = 12)
  • властивості PCSystemType: SELECT * FROM Win32_ComputerSystem WHERE PCSystemType = 2

Примітка. Можливі значення PCSystemType

значенняТип системи
0Unspecified
1Desktop
2Mobile
3Workstation
4Enterprise Server
5Small Office and Home Office (SOHO) Server
6Appliance PC
7Performance Server
8Maximum

У кожного із запропонованих запитів є свої плюси і мінуси. Найбільш коректною по ідеї повинна бути фільтрація за значенням PCSystemType, але, на жаль цей клас з'явився тільки в Vista, а у нас залишилося досить багато комп'ютерів із застарілою Windows XP, які не будуть фільтруватися таким запитом.

Більш цікавим мені видався WMI запит на визначення типу шасі (ChassisTypes), Що міститься в класі Win32_SystemEnclosure:

Можливі значення ChassisTypes наведені в таблиці:

значення ChassisTypesТип системи
1Other
2Unknown
3Desktop (в тому числі віртуальні машини)
4Low Profile Desktop
5Pizza Box
6Mini Tower
7Tower
8Portable
9Laptop
10Notebook
11Hand Held
12Docking Station
13All in One
14Sub Notebook
15Space-Saving
16Lunch Box
17Main System Chassis
18Expansion Chassis
19Sub Chassis
20Bus Expansion Chassis
21Peripheral Chassis
22Storage Chassis
23Rack Mount Chassis
24Sealed-Case PC

Таким чином, значення Chassis Types:

  • для ноутбуків: 8, 9, 10, 11, 12, 14, 18, 21
  • для десктопів: 3, 4, 5, 6, 7, 15, 16
  • для серверів: 17,23

Підсумковий WMI запит буде таким

select * from Win32_SystemEnclosure where ChassisTypes = "8" or ChassisTypes = "9" or ChassisTypes = "10" or ChassisTypes = "11" or ChassisTypes = "12" or ChassisTypes = "14" or ChassisTypes = "18" or ChassisTypes = " 21 "

Цей WMI фільтр можна легко перетворити в запит SCCM, що дозволяє побудувати колекцію, що включає в себе всі ноутбуки в мережі.

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 inner join SMS_G_System_SYSTEM_ENCLOSURE on SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_System.ResourceId where
SMS_G_System_SYSTEM_ENCLOSURE.ChassisTypes in ( "8", "9", "10", "11", "12", "14", "18", "21")

Ну і, нарешті, для наочного подання інформації про кількісному співвідношенні десктопів і Лаптєв в мережі, можна побудувати SCCM звіт:

SELECT
CASE ChassisTypes0
WHEN '8' THEN 'Notebooks'
WHEN '9' THEN 'Notebooks'
WHEN '10' THEN 'Notebooks'
WHEN '11' THEN 'Notebooks'
WHEN '12' THEN 'Notebooks'
WHEN '14' THEN 'Notebooks'
WHEN '18' THEN 'Notebooks'
ELSE 'Desktops'
END AS "Workstation Type", count (distinct sys.name0) as ClientCount from
v_GS_SYSTEM_ENCLOSURE ENC
INNER JOIN
v_R_System SYS ON ENC.ResourceID = SYS.ResourceID
WHERE
sys.client0 = 1 AND sys.obsolete0 = 0 AND active0 = 1
GROUP BY
CASE ChassisTypes0
WHEN '8' THEN 'Notebooks'
WHEN '9' THEN 'Notebooks'
WHEN '10' THEN 'Notebooks'
WHEN '11' THEN 'Notebooks'
WHEN '12' THEN 'Notebooks'
WHEN '14' THEN 'Notebooks'
WHEN '18' THEN 'Notebooks'
ELSE 'Desktops'
END
ORDER BY 2 desc

У нашому випадку співвідношення настільних ПК і ноутбуків 2832 до 109.

Отже, ми розглянули, як за допомогою значення атрибута ChassisTypes класу SystemEnclosure побудувати SCCM колекцію або створити WMI фільтр групової політики, що дозволяє вибрати всі ноутбуки мережі.