4 min read

ConfigMgr - Application Deployment - Global Conditions - Model Requirement

ConfigMgr - Application Deployment - Global Conditions - Model Requirement

You are not using collections as a mean to target application deployments are you?!

... Well, sometimes you would, and thats OK, but for a lot of cases you can do without, eg. when data available locally on a device can be used as a requirement.

What I've seen at different places is that a lot seems to use collections target specific deployments, as this of course can be valid and useful.
A lot of different collections and collection relationships congest your environment and might interfere with collection evaluation where it's really needed, so a better way to target specific models etc is using "Global Conditions".
This probably wont be an issue for many of you, the collections will evaluate eventually and probably within a reasonable amount of time, but if you can do it without these collections, why not?

OBS - I would be careful using this on any application deployed as "Required", as the condition will re-evaluate and might impact device performance.


It's really easy to get started with, and especially with something like model.
You only need a short powershell script which outputs the "Win32_ComputerSystem" class property "model".

So, lets get started with creating a new global condition!
In ConfigMgr console -> Software Library. we will use this as a base for later deployments:

Name Description Device Type Condition Type
Get ComputerSystem Model Checks "Win32_ComputerSystem" for .Model Windows Setting
Setting Type Data Type
Script String

Discovery Script

(Get-CimInstance -ClassName Win32_ComputerSystem).Model

Then, there is two ways we can do this.
Alternative ONE

We create an application and during the "Deployment Type" part, when we get to the "Requirements" step, we choose to add one. Or if you already got an application and you want to add a condition, then edit the Deployment Type and choose the requirements tab

Deployment Type Requirements

Choosing Custom as your category should give you the option to choose the condition we created earlier and set it up as the image above.
Then we do this for each of the models that you want to run the deployment type, or the ones that you don't if you set the Operator as eg. Not Equals.


Alternative TWO

We create another global condition and we use the first one as an expression. Allowing us to use it multiple times in the same condition. This can be useful eg. if you got a lot of applications where the same multiple conditions/requirements might apply, creating this to save you time instead of  adding multiple requirements for each of them.

Name Description Device Type Condition Type
Get ComputerSystem Model Checks "Win32_ComputerSystem" for .Model -eq "8x0 G8" Windows Expression

Clauses

Connector Clause
Check if ComputerSysteModel Equals EliteBook 830 G8
OR Check if ComputerSysteModel Equals EliteBook 840 G8
OR Check if ComputerSysteModel Equals EliteBook 850 G8

And then we add this one as a requirement instead.


Monitor the results

Under "Monitor -> Deployments", selecting the application you deployed, you should see devices not meeting the requirement as "Requirement Not Met".
I deployed 7-zip as an example (what else?) do some devices, as a required deployment.

And if you go deeper with "View Status"

And if you choose "More Details" at a selected device, you can see the setting name and "Client Value" which is what value was returned from the device. If it had been a physical device, the value returned by the discovery script would show instead of "Virtual machine".

Device Deployment

At the client, checking the "AppIntentEval.log"

And the Application is not even showing up in Software Center

If deployed to a User / User Collection

The application will show in software center, but you wont be able to install it.