Editor’s Note: This is a guest post from Matt Robertson
I am quickly learning that there are multiple ways to achieve the desired result within MDT. I set out to add BIOS updates to my task sequence and found a few posts that walked you through this. The steps in this article got me most of the way but it needed tweaking. In this article, we will cover adding BIOS updates to your Task Sequence. These will only update if the BIOS does not have the latest version that you have downloaded!
Prework: Organizing Your BIOS Updates
I used the same basic setup that I learned from the link above. I created a folder under my Applications folder in my Deployment share, named Dell. Under the Dell folder, I created a folder for each model of computer we have.
Under each of these folders I download the latest BIOS update for the corresponding model. I then rename the executable BIOSUpdate.exe and create a .txt file named with the version to make sure I don’t get confused. An example is below:
Once this prework is done, open the Deployment Workbench and edit your task sequence as follows.
Linking BIOS Updates within MDT
Create a new Group in the State Restore section named BIOS Updates, before the Install Applications task. You can put it in other areas, but this is where it makes the most sense to me. I have read articles by Joseph and others, who prefer putting this in the Preinstall section, but I run into issues trying to do that.
Under BIOS Updates folder, create a new Group for each model.
Under each Group, Add a “Run Command Line” task. In the command line box type: BIOSUpdate.exe –nopause -noreboot
This is the silent commands needed for a Dell BIOS update. In the Start in box, type the path to the update for that model. In this example, the path for the Precision T5600 is Z:\Applications\Dell\Precision T5600\
In case you didn’t know: Z: is used as the drive letter because MDT maps your deployment share to Z.
Under the current group (model folder), add a restart Computer task. The BIOS will flash and be updated before the rest of your task sequence continues.
How to Use a MDT WMI Query for BIOS Updates
We will now create the WMI queries that are needed. These make it so only the correct update gets ran, and only if the system does not have the latest BIOS update already. You must do the following for each of your models for this to work correctly. Don’t be intimidated if you have never used a WMI query. This article helped me understand how they work.
On each group (folder), select the options tab and click the Add drop down, then select Query WMI. The WMI Namespace will come up with root\cimv2 leave this and then enter the following in the WQL query field: Select * from Win32_ComputerSystem WHERE Model like ‘%Precision T5600%’
This example is for the Dell Precision T5600, use the same entry for each group/folder, changing only the model to match the group/folder you are editing. The model name must match the WMI model name which you can get from a multitude of places. If you are using command prompt, you can type wmic computersystem get model
Here is how the Task Sequence WMI Condition looks:
That makes sure we only run the BIOS update for the correct Model, but we also want to make sure we only run the update if it is the latest one we have downloaded. If you are imaging a computer that is already on A11, then why not skip the update and reboot to save a few minutes.
We accomplish this by adding another WMI query. Select the BIOS update task, and click the options tab, add a WMI query and type the following in the box:
select * from WIN32_BIOS where SMBIOSBIOSVersion < “A11”
A11 happens to be the latest BIOS update that I have downloaded for the T5600. The WMI query will kick off the BIOS update on any T5600 that has a BIOS version less than < A11. Copy the same command to the other command lines changing only the BIOS version number to reflect the current version that you have downloaded.
This will require manual updating, as you will have to periodically check for new BIOS versions, download them, rename them, update the txt file, and update the WMI query for the command line, so it reflects a new BIOS version that you have.
There are other ways to accomplish this task, and I am sure some of them are better than mine. This is what works for me, and my situation. I encourage you to keep researching and looking for ways to do it better. If you do have any suggestions or improvements, be sure to leave a comment below!