SCCM 2007 R2 - Создаем коллекции компьютеров 32-bit/64-bit

В процессе развертывания программного обеспечения через SCCM может возникнуть необходимость создания отдельных коллекций компьютеров в зависимости от битности используемой на них ОС, так как сейчас многие приложения имеют отдельные инсталляционные пакеты для разных платформ. Пример запроса на создание коллекции компьютеров по маске имени (например выбираем только ноутбуки и рабочие станции) и битности ОС для 32-битных систем Windows:

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_COMPUTER_SYSTEM

on SMS_G_System_COMPUTER_SYSTEM.ResourceId = SMS_R_System.ResourceId     

where (

SMS_R_System.NetbiosName like "KOM-%-NB%"

or SMS_R_System.NetbiosName like "KOM-%-WS%"

) 

and SMS_G_System_COMPUTER_SYSTEM.SystemType = "x86-based PC"

И соответственно тот же запрос только для 64-битных систем Windows будет отличаться лишь последней строкой: 

and SMS_G_System_COMPUTER_SYSTEM.SystemType = "x64-based PC"


Компьютеры под управлением Windows в среднестатистическом рабочем окружении могу иметь три основных типа существования:

  • 32-битная ОС установлена на x86 процессор
  • 64-битная ОС установлена на x64 процессор
  • 32-битная ОС установлена на x64 процессор
    Мы можем наглядно получить информацию о распределении таких типов существования в нашем окружении сформировав на SCCM отчет с запросом:

select distinct sys.netbios_name0,

case when pr.addresswidth0 = 64 then '64bit OS'

when pr.addresswidth0=32 then '32bit OS'

end as [Operating System Type],

case when pr.addresswidth0=32 and pr.DataWidth0=64 then '*'

end as [32-bit OS on x64 processor]

from v_r_system sys

join v_gs_processor pr on sys.resourceid=pr.resourceid


    Результат будет выглядеть примерно так:

image

    Или например чтобы получить сводную информацию о том как в данный момент распределены версии ОС по компьютерам в зависимости от их аппаратных возможностей можно сделать отчет на базе запроса:

select

    OS.Caption0,

    case when pr.Is64Bit0=1 then '64-bit'

    when pr.Is64Bit0=0 then '32-bit'

    end as [Processor Type],

    Count(*)

from

    dbo.v_gs_processor PR Left Outer Join dbo.v_GS_OPERATING_SYSTEM OS on PR.ResourceID = OS.ResourceId

Group by OS.Caption0, pr.Is64Bit0

Order by OS.Caption0, pr.Is64Bit0

    Результат:

image


    Возможно что эта информация будет полезна при планировании перехода с 32-битных систем на 64-битные.
    Источники информации:

Всего комментариев: 2 Комментировать

  1. Алексей /

    Алексей, добрый день! Как работать с SMS_R_SYSTEM стало понятно. А вы можете подсказать, как создать коллекцию компьютеров, к примеру, на которых установлен Internet Explorer 9 и Windows 7 x64? Пробовал связывать с SMS_G_System_INSTALLED_SOFTWARE по ResourceId, но не получилось (примечание: SCCM 2012 R2)

    1. Виталий Якоб /

      Лучше ипользовать "ADD_REMOVE_PROGRAMS_64" (если необходимо искать только x64 софт).

      Вот пример запроса, где будут отобраны только те компьютеры, на которые установлен Kompas 3D Viewer x64 редакции:

      select * from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS_64 on SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceId = SMS_R_System.ResourceId where SMS_R_System.OperatingSystemNameandVersion like "%Workstation%" and SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName like "%КОМПАС-3D Viewer%"

      Знак "%" играет роль маски и означает любое число любых символов.

      Но я бы не писал запросы вручную, в SC 2012 CM встроен достаточно хороший конструктор.

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