SCCM – App Requirement to detect laptops

I have an application I need to push out to only laptops that are used by a specific AD user group. I already have a collection set up to target my AD group, but I didn’t have a filter to target just the laptops.
To do this, I created a new global condition called Hardware Type. This houses a PowerShell script that checks the model against a known list of laptop model names and returns back either “Desktop” or “Laptop” as appropriate. From there, I can add the custom condition to my application and make sure that it only installs for users in my collection that have a laptop.

I named my Global Condition Hardware Type. It’s a Windows Setting and the setting type is Script and the data type is String.
Here’s my script (we’re mostly an HP shop and these are the models I use to identify laptops):

$Model = (Get-WMIObject win32_ComputerSystem).Model
$LaptopModels = @("Surface","EliteBook","Spectre","ZBook","Elite x2")
$LaptopModels | ForEach-Object { if ($Model.Contains($_)) { $LaptopDetected = $True } }
if ($LaptopDetected) { "Laptop" } else { "Desktop" }

From there, I just had to add a Requirement that Hardware Type = “Laptop”.



PXE Wizardry

Today was our (partial) production cutover from SCCM 2007 to SCCM 1511.
The main change is that new machines we set up starting today are using the new deployment process. It’s not so much of a technical thing as a “Use the new process instead of the old one” thing.

Well, there was one technical change… and it was complicated: PXE Booting. Up until yesterday, everyone’s been using USB or ISO files to boot to the new deployment environment. But with this cutover, we can repoint PXE booting from SCCM 2007 to the shiny new stuff.

Here’s some things to be aware of as part of the process: