Рассмотрим новую функциональную возможность написания запросов и вывода результатов в реальном времени в Configuration Manager 2016 v1810.

В Configuration Manager одной из сильных сторон является отчётная система, которая выводит информацию относительно последнего опроса клиентов, по умолчанию это происходит еженедельно. Начиная с версии 1806 в SCCM появилась встроенная программа CMPivot, которая имеет доступ к состоянию устройств в режиме реального времени. В ней системный администратор может составить запрос, который отправится на все подключенные машины выбранной группы и сразу получить результат, а также отфильтровать, сгруппировать и расширить\уточнить возвращенные данные. Разберёмся, как написать запрос и получить соответствующую информацию.

 

Принцип работы CMPivot

CMPivot соединяется с SCCM-клиентами с применением "быстрого канала" [https://www.anoopcnair.com/video-guide-to-troubleshoot-sccm-cb-fast-channel-push-notification-issues/], который связывает сервер с клиентом, а также используется для уведомления клиентов, получения данных об их состоянии, защиты с помощью Endpoint Protection.

Если клиент находится в активном состоянии, то он сразу отвечает на запрос. С оффлайновых клиентов CMPivot может получить данные в течение 1 часа при условии, что программа не закроется, а компьютеры станут доступными и клиенты получат статус Active [https://docs.microsoft.com/ru-ru/sccm/core/servers/manage/cmpivot , https://www.anoopcnair.com/sccm-cmpivot-guide/]. Все полученные результаты будут временно храниться в базе данных.

 

Места хранения данных

С внедрением CMPivot в SCCM появилось два новых представления [http://www.scconfigmgr.com/2018/08/06/cmpivot-in-configmgr-1806-part-3-cmpivot-and-sql-reports] - это vSMS_CMPivotStatus и vSMS_CMPivotTask. Рассмотрим их назначение.

Первое представление - vSMS_CMPivotStatus - сообщает о состоянии заданий, запущеных из CMPivot, а именно: версию скрипта, с какого устройства и на скольких других машинах был запущен скрипт, количество недоступных клиентов. Информация для этого представления основана на трех таблицах (ClientAction, CMPivotResult, System_DISC) и двух представлениях (vSMS_ClientOperationStatus, vSMS_Scripts).

Второе представление - vSMS_CMPivotTask - имеет больше взаимосвязей, а именно: 9 таблиц (ClientActionSummary, ClientOperationResourceTarget, ClientOperationTarget, CMPivotResult, CollectionMembers, FnConvertBase64StringtoBinary, fnGetSiteNumber, fnlsCas, Scripts) и одно представление (vSMS_ClientOperationStatus), что в результате даёт больше сводной информации.

 

Работа с CMPivot

Интерфейс программы CMPivot разделен на 3 части. Слева расположена панель с объектами, посередине сверху – поле для написания запросов, а под ней – поле для отображения результатов.

Для работы с CMPivot должны быть права администратора или SMS_ScriptsRead = Yes и CollectionsRun Script = Yes.

Чтобы запустить CMPivot, нужно зайти в Asset and Compliance->Overview->Device Collections, на коллекции компьютеров нажать правой кнопкой мыши и выбрать пункт Start CMPivot.

CMPivot использует подмножество модели потока данных Azure Log Analytics. Запросы CMPivot очень похожи на запросы языка SQL. Совокупность клиентских сущностей и операторов разделяется “|”, представляя поток табличных данных слева направо. Каждый следующий оператор получает набор табличных данных от предыдущего, дополняет новыми наборами из тела оператора и передает дальше. Вся конструкция выглядит так:

сущность | оператор1 | оператор2 | ...

Пример1. Выведем список компьютеров с операционной системой Windows 10 (см. рис. 1):

OS | where (version like ’10.%’)

Рисунок 1. Вывод списка машин с ОС Windows 10.

Пример 2. Отобразим информацию с лог-файла ccmlog, где все строки начинаются со слова Execution или Execute. Запрос будет выглядеть так:

Ccmlog(‘Scripts’) | where (LogText like ‘Execut%’)

По завершению работы некоторых запросов полученную информацию можно использовать дальше [https://thesleepyadmins.com/2018/09/23/using-sccm-cmpivot/], открыв контекстное меню: использовать поиск другой информации, запустить удалённый доступ, открыть Resource Explorer, выполнить скрипт PowerShell. Для примера выведем список компьютеров с определённым сервисом (см. рис. 2):

Service | where name like 'WinRM'

Рисунок 2. Дополнительные действие запроса.

Следующий пример позволяет вывести версию файла [https://thesleepyadmins.com/2018/09/23/using-sccm-cmpivot/]. Такие действия могут быть полезны для поиска устройств, до которых обновление ещё не дошло или не применилось. Запрос будет выглядеть следующими образом:

File(‘%windir%\\system32\\cmd.exe’) | where (version > ‘8%’)

В CMPivot результаты работы запроса можно визуализировать с помощью Azure Log Analytics [https://docs.loganalytics.io/docs/Language-Reference, https://www.niallbrady.com/2018/09/16/system-center-configuration-manager-technical-preview-1809-is-out/], будут доступны: гистограмма, столбчатая диаграмма, круговая диаграмма и временная диаграмма.

 

Пример 5. Отобразим последние использованные приложения с помощью гистограммы.

CCMRecentlyUsedApplications
| summarize dcount(Device) by ProductName
| top 10 by dcount_
| render barchart

 

Пример 6. Выведем все версии ОС Windows на круговой диаграмме (см. рис. 3).

OperatingSystem 
| summarize count() by Caption  
| render barchart 

Рисунок 3. Результат на круговой диаграмме.

Применять CMPivot можно и для получения информации о комплектующих компьютера, обращаясь к любому классу инвентаризации оборудования. CMPivot отображает как результаты последнего сканирования оборудования, вытянутые из базы данных, так и результаты с онлайн-клиентов. Если эти данные выводить графически, то столбики на графике будут иметь разные оттенки: темно-синий – данные получены в реальном времени, голубой – из базы данных.

Пример 7. Выведем информацию о логических дисках, свободном месте на них (см. рис. 4).

LogicalDisk

| summarize sum(FreeSpace) by Device

| order by sum_ desc

| render columnchart

Рисунок 4. Данные о логических дисках на графике.

Для получения информации об инвентаризации нужно учитывать несколько ограничений:

· не поддерживаются некоторые сущности (свойства массива, например, IP-адрес, Real32/Real64, свойства встроенного объекта);  

· имена сущностей должны начинаться с символа;

· нельзя перезаписать встроенные сущности путём создания новых с тем же именем.

 

Troubleshooting

Как обычно, для устранения каких-либо проблем помогают лог-файлы.  

Работая с CMPivot, необходимо смотреть идентификатор запроса в правом нижнем углу программы (см. рис. 1) и искать соответствия в лог-файлах, которые располагаются как на сервере (Smsprov.log, bgbserver.log, Statesys.log), так и на пользовательской машине (CcmNotificationAgent.log, Scripts.log, StateMessage.log).

 

Достоинства: получение данных в реальном времени, проста в использовании, дружелюбный интерфейс.

Недостатки: трата времени на поиск информации об объектах и их тестирование.

Вывод: с помощью не очень сложных конструкций запроса в программе CMPivot можно выводить различную информацию об операционной системе и железе, сервисах и файлах, пакетах и приложениях, как в виде таблицы, так и с помощью графиков. Очень не хватало такой программы в предыдущих версиях Configuration Manager.