SCCM 2007 – OSD Troubleshooting – Task Sequence WMI queries on computer models returning false results

I’ve written a few items concerning adding WMI queries to driver packages within the OSD task sequences within SCCM2007. Recently I hit a snag which was somewhat perplexing until I decided to browse the WMI with several different tools.

Generally, I’ve taken to browsing the WMI on various computers models with SCCM Client Center as it is very good, all-purpose tool. As I was building a model injection task sequence for Windows 7 (x64) I discovered that none of my WMI queries for Win32_ComputerSystem.Model were functioning. Where they had performed flawlessly in Windows XP they were failing in Windows 7.

For example:

Running the following query on an OptiPlex 755 returned a 0 value. (I’m using a 755 so testing the query locally via the SCCM console was a good method of verification.)

SELECT * FROM Win32_ComputerSystem WHERE Model = “OptiPlex 755”

For testing purposes, I changed the = to a LIKE and just left the remainder as “OptiPlex%” which returned a positive result. Additionally, changing the remainder to “OptiPlex 755%” also yielded a positive result. At this point I knew that something was different in the way this particular class was either registered within Windows 7 or something was different in the way it was read.

Using SCCM Client Center yielded a value of “OptiPlex 755”. I decided to go download the old WMI Administrative Tools app from Microsoft (located – http://www.microsoft.com/downloads/details.aspx?FamilyID=6430f853-1120-48db-8cc5-f2abdc3ed314&displaylang=en) to see what it would yield. Lo and behold, the value was “OptiPlex 755 ” – the spaces being 17 in total. I tested this by inserting 17 spaces into my query and the result came back positive.

My recommendation at this time, in order to save people the trouble of checking each model in their environment for the number of spaces, is to change the query to the following: (insert your computer model where OptiPlex 755 is in the query below)

SELECT * FROM Win32_ComputerSystem WHERE Model LIKE “OptiPlex 755%”

If this fails on any particular machine, I will post here, and would appreciate readers doing the same.

SCCM 2007 – OSD Configuration – Naming Conventions and Task Sequence Queries

I was working on a task sequence consolidation this morning and thought I would throw this one out there in case anyone else has a similar situation.

In our environment, we have several applications which require location-specific parameters… basically, the developers have created different configuration files which are based on the site location of the end-user. If you use task sequences for both OSD and application deployment, this should work for you as well, depending upon your machine naming convention. I prefer to use a convention which is organized as such:

[Location Acronym][Unique Identifier][Departmental Acronym]

i.e. and machine in Austin with a serial number of 123456 and a department of Technology would be AST123456TECH – just an example

Although the application programs have dependencies, the configuration program is the last step in the process. So, I have created the first two dependency programs and then configuration programs for each location dependent upon the last program in the dependency chain. All of these are placed in the same task sequence, in order of dependency, and then I use a WMI query to ensure that the proper configuration program is run at the end of the chain based on machine name. (Machine name just happens to be convenient for us, but you could use this same technique for anything obtainable in the WMI which could be used as a locational identifier.)

Query used for the Austin configuration program:

SELECT * FROM Win32_ComputerSystem WHERE Name LIKE “AST%”

You can follow the results in the SMSTS.log file: (I’ve taken out the time stamps)

Query = SELECT * FROM Win32_ComputerSystem WHERE Name LIKE “AST%”
Expand a string: root\cimv2
Expand a string: SELECT * FROM Win32_ComputerSystem WHERE Name LIKE “AST%”
The WMI condition expression is evaluated to be TRUE
The AND expression is evaluated to be TRUE
The condition for the action (Install – [Location Configuration Program] – AST) is evaluated to be true

Really pretty simple when you look at it, but quite handy for consolidation.