SCCM 2012: Deploying Dell BIOS Updates using the Application Model

SCCM 2012: Deploying Dell BIOS Updates using the Application Model


TechCenter is a community for IT professionals that focuses on Data Center and End User Computing best practices. Here you can learn about and share knowledge about Dell products and solutions.

SCCM 2012: Deploying Dell BIOS Updates using the Application Model

Dustin Hedges is a Sr. Systems Engineer for eBay Inc. based out of Austin, Texas.  His primary focus is on Client System Deployment and Management leveraging Microsoft’s System Center Configuration Manager.  He blogs at and you can also find him on Twitter - @dhedges01

The following is a cross post from his Microsoft ConfigMgr Deployment blog, deploymentramblings


During a recent migration from SCCM 2007 to SCCM 2012 SP1, I wanted to really start taking advantage of the new Application Model for software and driver deployments. My goal was simple, to create an Application that would deploy any Dell BIOS Update, to any applicable system, and handle daisy-chaining and even reboots. All this without (much) scripting.

The process outlined below should give you a good understanding of the steps needed to create an Application and various Deployment Types with all of the necessary Detection, Requirement and Dependency Rules needed to successfully deploy Dell BIOS updates using Configuration Manager 2012.

Note: If you are reading this then you are likely familiar with my other post about Updating Dell BIOS with PowerShell. Much of the concept and setup here is the same, however using the Application Model we get some added benefits.

  1. We only download content for our specific version. If you have a lot of models to deal with (like I do), this really has an impact in overall download and execution times (My BIOS Update package was well over 300MB when I implemented this method).
  2. Configuration Manager 2012 now gracefully handles reboots from the Application Model meaning we only need to reference the step once in the Task Sequence. We also don’t need to stage any subsequent updates to the local drive because we aren’t downloading ALL of the BIOS Updates.
  3. We get applicability reporting within Configuration Manager’s AppEnforce.log file which aids troubleshooting
  4. Using this model we can now more easily handle BIOS Updates from other vendors and can even deal with those pesky “Consumer” BIOS updates as well (I’m looking at you Dell XPS…).

First things first, gather up all the latest (tested) BIOS updates for the models you support and organize them (I organize them by model). Each "model" folder will end up being the Content Source location for each Deployment Type. (You could go a step further and create a Version# folder for each version of BIOS update. But since each model will likely only have 1 or 2 applicable BIOS Updates, it’s not really necessary.)

Next up we create our custom SCCM Application. All fields are filled out manually. Make sure you use an appropriate naming convention according to your companies standards.

The next step is one that will be repeated over and over again (with a little assistance from the Copy function). We will start by creating the first of many Deployment Types. I’m going to use the BIOS updates for the Dell Latitude E6420 as my example in this post so you can see how to use dependencies in order to install "down level" updates in order.

I like to start with the lowest version number first so we can add the dependencies as we go. We’ll start off with version A05. Provide the general items such as Name, Content Source, Installation Program, etc.

For the Detection Method, I chose to leverage a custom script to detect the BIOS version. This allows me to deal with those pesky "patch" updates that sometimes come out.

Here is the detection script I use:

 1: 'Change strBIOSUpdateVersion to the version you are deploying to
 2: strBIOSUpdateVersion = "A05" 
 4: 'Get BIOS Version from Win32_BIOS
 6: Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
 7: Set colBIOS = objWMI.ExecQuery("Select * from Win32_BIOS")
 8: For Each objBIOS In colBIOS
 9: If objBIOS.SMBIOSBIOSVersion >= strBIOSUpdateVersion Then
 10: WScript.Echo "Detected"
 11: End If
 12: Next

Add Requirements.

I created a custom Global Condition to echo out the Model from WMI. I use this requirement rule to ensure the Deployment Type only applies to the appropriate system type.

Here is the configured Global Condition:

And here is how it’s referenced within the Deployment Type:

Configure the User Experience.

Depending on how you configure the install command, you can have ConfigMgr handle the restart or allow the BIOS update to restart the computer. If you choose the latter, make sure you configure the appropriate return code so ConfigMgr is aware of a potential restart.

After setting up the first Deployment Type, hit the Apply button so the Deployment Type is saved within the application. Failing to do this will make it unavailable when you try to add it as a dependency.

Copy the Deployment Type and make the necessary updates to the Name, Content Source, Install Command and Detection Method. Click on the Dependency Tab and create a new Dependency Group. Then add a Dependency selecting the first BIOS update you created.


After all of the Deployment Types are created, distribute the content and deploy your new application to a test system (or you can add it into an OSD Task Sequence for testing, ConfigMgr should automatically handle the reboots and ensuring that all "down level" updates are applied in order for each model you add.

Comment Reminder

Unrelated comments or requests for service will be unpublished. Please post your technical questions in the Support Forums or for direct assistance contact Dell Customer Service or Dell Technical Support.. All comments must adhere to the Dell Community Terms of Use.

  • Did you happen to use this with BitLocker? How would you script suspending bitlocker with this?

  • I am also interested, like B_Joseph, in a way to use this method but in combination with a BitLockered encrypted machine. So how do you resume and suspend BitLocker ?

  • If the BIOS has a passward, how to do?

  • Dustin, I am having probs getting this to work.  The app model completes with 100% compliance when deployed, however, no BIOS updates are performed.  I even recreated this app with only one model(960) and still nothing updated.  I am at a loss as to what the script actually does other than agrees that the BIOS level is less than A18 in my test.  Should I be editing this to trigger something ?

  • Hello,

    I could not get this to work. It just automatically says that the BIOS is installed when I know its not. Any ideaS?

  • It appears that this does work but when you hit install i still get the bios update window with a progress bar for a second and then system center says it "failed" even though it doesn't. Once you reboot it installs the BIOS. I want to make it so system center sees it as installed. How do we go about doing this?

  • Did anyone get an answer to dealing with Bitlocker during the BIOS update?

  • john05.636 - you could make this into a non-OS task sequence instead, which has a disable bitlocker step that may work...