Fast channel architecture changed the entire behavior of SCCM. Now it’s not at all a slow moving server(SMS). You can make it run as fast as you can. The SCCM CMPivot Queries can be based on supported entities of each version of SCCM. Entities – this is what Microsoft calls the querying objects of each SCCM client.
Are you interested to see the first version of CMPivot? Following is my post SCCM CB Preview version 1805.
Prerequisite of SCCM CMPivot
Make sure you are running the latest version of SCCM client and CMPivot (SCCM console). SCCM security permissions required to run CMPivot as Microsoft documented here. Also, SCCM client devices should require PowerShell version 5.0. The Start CMPivot action doesn’t appear in the console when it’s connected to an SCCM CAS site.
How CMPivot Works in the Background?
The architecture of CMPivot is based on fast channel architecture. There are two steps in a very high-level architecture flow.
1. CMPivot sends queries to SCCM clients using SCCM Fast Channel
2. SCCM Clients return results via the similarly quick state message system
3. The CMPivot results are temporarily stored in the database (until the CMPivot window is open?)
4. A CMPivot Query will try to connect to machines which are not online for an hour. This retry happens only when CMPivot window is open.
The following picture is he architecture flow of fast channel which I explained in the fast channel notification post.
Video Tutorial – SCCM CMPivot Guide Overview
How to Run Query in SCCM CMPivot?
- CMPivot gets open as a different window. The CMPivot pane on the left lists the Entities that are available on clients. Some entities rely upon WMI while others use PowerShell to get data from clients.
- Right-click an entity for the following actions:
- Insert: Add the entity to the query at the current cursor position. The query doesn’t automatically run. This action is the default when you double-click an entity. Use this action when building a query.
- Query all: Run a query for this entity including all properties. Use this action to query for a single entity quickly.
- Query by device: Run a query for this entity and group the results. For example,
Disk | summarize dcount( Device ) by Name
- Right-click an entity for the following actions:
What are the Actions you can launch from CMPivot?
Apart from querying the online devices in almost realtime, what are the other actions you can take directly from CMPivot? Well, you can see some handy options are available for you.
The SCCM CMPivot results pane displays the data returned by active clients for the query, and you have some right click options as I mentioned below.
- The available columns vary based upon the entity and the query.
- Click a column name to sort the results by that property.
- Right-click on any column name to group the results by the same information in that column, or sort the results.
- Right-click on a device name to take the following additional actions on the device.
1. Create a direct membership device collections
2. Export the CMPivot query report results to CSV
3. Export the CMPivot query report results to Clipboard
4. Run Remediation scripts to selected devices (SCCM client)
5. Take Remote Control of a device from CMPivot
6. Take Resource Explorer of an SCCM client device from CMPivot
7. Select a device and do Pivot to another entity to drill down the issues
CMPivot Troubleshooting & Log files
OK. So the communication channel of CMPivot is same as SCCM fast channel. I would recommend reading my previous post to perform deep-dive troubleshooting of CMPivot issues. Apart from that log files are good friends of SCCM admins all the time, and for CMPivot also it’s the same.
Make sure your basics are correct or not. Check out the request id at the right bottom side of CMPivot windows. This id will help you to troubleshoot via log files. Check out the collection from which you initiated the CMPivot at the right bottom side of CMPivot windows.
Following are some of the log files which you want to look at when you have trouble with CMPivot.
Server-side CMPivot Log
Client-side CMPivot Log :
Any clients that returned Total, Failed, Offline – Query completed on 3 of 5 clients (2 clients offline and 0 failure)
Client Operation ID – id(16780221)
Collection Name – All Desktop and Server Clients
The total number of rows in the results pane – 1 objects
List of Entities Supported by CMPivot
CMPivot Entities – these entities are what Microsoft calls the querying objects of each SCCM client. I hope this list will grow with newer releases of SCCM CB.
Administrators – Members of the local administrator’s group
AppCrash – Recent application crash reports
AutoStartSoftware – Software that starts automatically with, or immediately after, the operating system
Bios – System BIOS information
CcmLog() – Up to the last 50 lines from a Ccm Log file
Connection – An active TCP connection in or out of the device
Device – Basic information about the device
Disk – Local storage device information on a computer system running Windows
EventLog() – Up to the last 50 events from a Windows event log
File() – Information about a specific file
FileShare – Active file share information
InstalledSoftware – An application installed on the device
IPConfig – Gets network configuration, including usable interfaces, IP addresses, and DNS servers
OS – Basic information about the operating system
Process – A process on an operating system
Registry() – All values for a specific registry key
Service – A service on a computer system running Windows
SMBConfig – SMB Configuration of a device
SoftwareUpdate – A software update applicable but not installed on the device
User – A user account with an active connection to the device
Sample SCCM CMPilot Query
Sample queries you can try with SCCM CMPivot.
Disk | summarize dcount( Device ) by Name OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ > 0) OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ == 0) | project Device Service | summarize dcount( Device ) by Name Service | where (Name == 'Browser') | summarize count() by Device Bios | summarize countif( (Version == 'LENOVO - 1140') ) by Device | where (countif_ > 0) Disk | where (Description == 'Local Fixed Disk') | where isnotnull( FreeSpace ) | order by FreeSpace asc
CMPivot for real-time data in Configuration Manager – https://docs.microsoft.com/en-us/sccm/core/servers/manage/cmpivot