The term "Chassis Type" refers to the physical form factor or case design of computer hardware. Essentially, it defines the shape, size, and overall configuration of the computer enclosure that houses all internal components. This specification is crucial as it determines the design and compatibility of the components that can be accommodated within the system.
Where Chassis Type Information is Stored:
On Windows devices, details regarding the chassis type are stored within the WMI class "Win32_SystemEnclosure". For those unfamiliar, WMI (Windows Management Instrumentation) provides a comprehensive infrastructure for managing and querying system data on Windows operating systems. You can deeper into this subject through the official Microsoft documentation available here.
For organizations utilizing SCCM , the Chassis Type information is collected as part of the hardware inventory. This data is stored in the "v_GS_SYSTEM_ENCLOSURE" table, facilitating custom reporting via SQL queries.
Categorization of Devices:
According to Microsoft's documentation, desktops and laptops are categorized based on specific chassis types. Here's a breakdown of the classification filters:
- Laptop: Chassis types include "8", "9", "10", "11", "12", "14", "18", "21", "31".
- Desktop: Chassis types include "3", "4", "5", "6", "7", "15", "16".
Transition to Intune Management:
Transitioning from SCCM to Intune doesn't negate the need to identify devices based on their chassis type. In this blog post, we explore various methodologies to distinguish between desktops and laptops using Intune.
Options for Identifying Desktops and Laptops:
Option 1: Using the Intune Console
- Exporting Device Lists: Utilize Intune console's export functionality, combined with simple Excel formulas based on device naming conventions or Wi-Fi MAC addresses.
- Custom Columns: Intune allows the addition of custom columns, such as Wi-Fi MAC addresses, aiding in the differentiation between laptops and desktops.
Devices with both Wi-Fi and Ethernet.
Devices with only Ethernet.
Option 2: Utilizing Diagnostic Settings with Log Analytics
- Automated Data Visualization: Configure diagnostic settings within Intune to stream data to Azure Log Analytics. This facilitates the use of KQL queries to automate data analysis, enabling visualization of device counts categorized as laptops or desktops.
Intune diagnostics settings
Here is the Microsoft documentation about the IntuneDevices schema table https://learn.microsoft.com/en-us/azure/azure-monitor/reference/tables/intunedevices
IntuneDevices table contains “WifiMacAddress” . We will use this to identify if the device is laptop or desktop.
The following is the KQL query with iif condition. you can run this query in Log analytics.
IntuneDevices
| summarize arg_max(TimeGenerated, *) by DeviceName
| where OS == "Windows" and DeviceName !contains "#" and isnotempty(DeviceName) and ManagedBy != "MDE" and CompliantState != "ConfigManager"
| extend Chassistype = iif(Model contains "Virtual", "Virtual", iif(isnotnull(WifiMacAddress) and WifiMacAddress != "", "Laptop", "Desktop"))
| summarize Count = count() by Chassistype
Option 3: Leveraging Microsoft Graph
Powershell Graph: Query Wi-Fi and Ethernet MAC addresses using Powershell through Microsoft Graph. While the Chassis Type isn't directly available, this approach aids in comprehensive device data analysis.
Get-MgDeviceManagementManagedDevice -ManagedDeviceId $id | Select-Object DeviceName, EthernetMacAddress, WiFiMacAddress | Export-CSV devices.csv
For more information about the powershell command, please refer here
Option 4: Collecting WMI Data with Proactive Remediation (equivalent to SCCM)
- Enhanced Inventory: Implement Proactive Remediation scripts to collect WMI class data and store it in Log Analytics. This method replicates SCCM-like functionality within Intune for robust custom reporting.
Enhance custom inventory using Proactive Remediation, please refer Enhance Intune Inventory data with Proactive Remediations and Log Analytics - MSEndpointMgr
Here is the powershell you can append to you existing code to collect the data.
$SystemEnclosure = Get-CimInstance -ClassName Win32_SystemEnclosure -ErrorAction SilentlyContinue $ChassisType = $SystemEnclosure.ChassisTypes
Do you have different methods to identify the chassistype in intune, do comment below.