I was working with a customer once and we were looking for a good way to separate laptops from desktops within Configuration Manager when we hit upon this little known “memory” trick that I wanted to share.
Often times people use the Win32_SystemEnclosure class and look up the chassis type. While this is a good, and accurate, way to do it the fact that you have to parse all the possible outcomes to then group into “laptop” and “not laptop” is a little bit of a pain. An alternative method that we found is to use the Win32_PhysicalMemory class instead. In there is a property called FormFactor that can be put to use. We found that a value of 12 would indicate a laptop. 12 means that the memory in the machine is SODIMM, a memory used almost (but not totally) exclusively by laptops. While this isn’t as fool proof as the system enclosure, I suspect that it will work for most of you out there who are trying to differentiate laptops from desktops in your ConfigMgr inventory.
There is one downside, which is that the Win32_PhysicalMemory class is not collected by default as part of your hardware inventory. Adding it is easy enough though, just modify your SMS_DEF.MOF and off you go.