SCCM cодержит в себе многофункциональную отчетную подсистему, которая позволяет выводить разностроннюю информацию относительно последнего опроса своих клиентов. По умолчанию опрос происходит каждые 7 дней.
Начиная с версии 1806 в SCCM появилась встроенная программа CMPivot, которая имеет доступ к состоянию устройств в режиме реального времени. CMPivot позволяет быстро оценить состояние устройств в вашей среде и предпринять действия. При вводе запроса CMPivot запустит его в режиме реального времени на всех подключенных устройствах в выбранной коллекции. Возвращенные данные можно затем отфильтровать, сгруппировать и уточнить, чтобы ответить на бизнес-вопросы, устранить проблемы в среде или угрозы безопасности.
Принцип работы CMPivot.
CMPivot соединяется с SCCM-клиентами с применением «быстрого канала», который связывает сервер с клиентом, а также используется для уведомления клиентов, получения данных об их состоянии, защиты с помощью Endpoint Protection. Если клиент находится в активном состоянии, то он сразу отвечает на запрос. С офлайновых клиентов CMPivot может получить данные в течение одного часа при условии, что программа не закроется, а компьютеры станут доступными и клиенты получат статус Active. Все полученные результаты будут временно храниться в базе данных (кеш данных).
Работа с CMPivot.
Интерфейс программы CMPivot разделен на три части. Слева расположена панель с объектами, посередине сверху – поле для написания запросов, а под ней – поле для отображения результатов.
Для работы с CMPivot должны быть права администратора:
SMS_Scripts – Read = Yes
Collections – Run Script = Yes
Чтобы запустить CMPivot, нужно в консоли SCCM зайти в Asset and Compliance → Overview → Device Collections, на любой коллекции компьютеров нажать правой кнопкой мыши и выбрать пункт Start CMPivot либо нажать кнопку "Start CMPivot" на верхней панели. Закладка "Главная" имеет развернутую справку по списку сущностей, операторов и функций, которые можно будет применять в запросах CMPivot. В поле слева можно развернуть любую сущность чтобы узнать какие свойства она может показать и формат (текст, дата, число, логика) этого свойства.
CMPivot использует подмножество модели потока данных Azure Log Analytics, запросы очень похожи на запросы языка SQL, но называются Kusto Query Language (KQL) . Совокупность клиентских сущностей и операторов разделяется «|», представляя поток табличных данных слева направо. Каждый следующий оператор получает набор табличных данных от предыдущего, дополняет новыми наборами из тела оператора и передает дальше по конвейеру. Конструкция выглядит так:
Сущность | оператор1 | оператор2 | ...
Комментарий начинается с //.
Пример 1. Так можно вывести список компьютеров с операционной системой Windows 10:
OS | where (version like '10.%')
Пример 2. А так показать информацию с лог-файла ccmlog, где все строки начинаются со слова Execution или Execute. Запрос будет выглядеть так:
Ccmlog('Scripts') | where (LogText like 'Execut%')
По завершении работы некоторых запросов полученную информацию можно использовать дальше, открыв контекстное меню: использовать поиск другой информации с помощью того же CMPivot (новый экземпляр) , запустить удаленный доступ на хост, открыть Resource Explorer, выполнить скрипт PowerShell.
Пример 3. Список компьютеров с определенным сервисом:
Service | where name like 'WinRM'
Пример 4. Следующий пример позволяет вывести версию определенного файла. Такие действия могут быть полезны для поиска устройств, до которых обновление еще не дошло или не применилось. Запрос будет выглядеть следующим образом:
File('%windir%\\system32\\cmd.exe') | where (version > '8%')
Пример 5. Cписок хостов у которых не определилась корпоративная сеть:
IPConfig | where (InterfaceAlias !startswith 'Ethernet') or (Name like '%сеть')
В CMPivot результаты работы запроса можно визуализировать с помощью Azure Log Analytics оператором render. На сегодня доступны areachart, barchart, columnchart, linechart, piechart, timechart.
Пример 6. Отобразим последние использованные приложения с помощью гистограммы:
CCMRecentlyUsedApplications
| summarize dcount(Device) by ProductName
| top 10 by dcount_
| render barchart
Применять CMPivot можно и для получения информации о комплектующих компьютера, обращаясь к любому классу инвентаризации оборудования. CMPivot отображает как результаты последнего сканирования оборудования, вытянутые из базы данных, так и результаты с онлайн-клиентов. Если эти данные выводить графически, то столбики на графике будут иметь разные оттенки: темно-синий – данные получены в реальном времени, голубой – из базы данных.
Пример 7. Выведем информацию о логических дисках, свободном месте на них:
LogicalDisk
| summarize sum(FreeSpace) by Device
| order by sum_ desc | project Device, GBytes=sum_ | order by GBytes
| render columnchart
При получении информации об инвентаризации нужно учитывать несколько ограничений:
- не поддерживаются некоторые сущности (свойства массива, например, свойства встроенного объекта);
- имена сущностей должны начинаться с символа;
- нельзя перезаписать встроенные сущности путем создания новых с тем же именем;
- нельзя создать свои сущности.
Как обычно, для устранения каких-либо проблем помогают лог-файлы. Работая с CMPivot, необходимо запомнить идентификатор запроса в правом нижнем углу программы (id) и искать соответствия в лог-файлах, которые располагаются как на сервере (Smsprov.log, bgbserver.log, Statesys.log), так и на пользовательской машине (CcmNotificationAgent.log, Scripts.log, StateMessage.log).
С помощью не очень сложных конструкций KQL-запроса в программе CMPivot можно выводить различную необходимую информацию об операционной системе и железе, сервисах и файлах, пакетах и приложениях как в виде таблицы, так и с помощью графиков. Полученные данные можно экспортировать в CSV или PNG файлы.
Что интересно что CMPivot имеет standalone версию, которую можно установить на любой хост домена. Даже на тот который не входит в коллекции SCCM! Это позволяет делегировать фукнционал CMPivot службе поддержки или мониторинга вашей организации.
Удачи.
1 comment:
InstalledSoftware | where Device == 'CORPPRO01' and ProductName contains 'Studio'
Post a Comment
А что вы думаете по этому поводу?