Windows 7 OSD Alternate Driver Solution (tested on Dell)
Several months ago I started encountering intermittent driver issues during imaging newer Dell systems with Windows 7. Dell has several excellent articles on how to handle Windows 7 imaging on newer systems with NVMe, but none of these articles really hit the nail on the head for my issue. I would get a batch of 50 systems where 45 would image perfectly and 5 would fail even after repeated attempts. I cracked open a working system and a failing system to find the same exact components (same hardware revs and all) in each one. Second thing on the checklist was to make sure every single setting in the BIOS was the exact same which it was.
After several months of battling model after model with limited success, a new contractor joined my organization and we both came to the conclusion after a few days that things were acting really weird. I then stumbled across an article for SCCM CB that seemed to describe a similar issue to what we were having.
We have a step (highlighted yellow) in our TS for Apply 7050 Driver Package (we are using the Dell Enterprise CAB driver pack from http://en.community.dell.com/techcenter/enterprise-client/w/wiki/2065.dell-command-deploy-driver-packs-for-enterprise-client-os-deployment) that uses the traditional driver package step with a WMI Query for SELECT * FROM Win32_ComputerSystem WHERE Model LIKE "%Optiplex 7050%" that limits it to that specific model. Important notes - we check the boxes for Do unattended installation of unsigned drivers and Continue on error.
Immediately after this step, add in a new Group and call it Retry if Failed - Model Number. Check the box for Continue on error. Then add in two conditions:
1. WMI Query: SELECT * FROM Win32_ComputerSystem WHERE Model LIKE "%Optiplex 7050%"
2. Task Sequence Variable:
a. Variable: _SMSTSLastActionSucceeded
b. Condition: equals
c. Value: false
The first step in the Group will be a new Task Sequence Variable (Add - General - Set Task Sequence Variable). Call this step TS Variable - OSDAllowUnsignedDriver True if you would like to allow unsigned drivers or TS Variable - OSDAllowUnsignedDriver False if you are not going to allow unsigned drivers. Check the box for Continue on error. Set the Task Sequence Variable to OSDAllowUnsignedDriver. Set the Value to true if you want to allow unsigned drivers or false if you don't want to allow unsigned drivers.
After several months of battling model after model with limited success, a new contractor joined my organization and we both came to the conclusion after a few days that things were acting really weird. I then stumbled across an article for SCCM CB that seemed to describe a similar issue to what we were having.
After installing the ADK 10 1607 on ConfigMgr Current Branch 1602 or newer, the Apply Driver Package task will start failing while installing one of the drivers in the Driver Package. The failure is random and will not occur on the same driver every time. Occasionally the Apply Driver Package task may succeed.While this didn't describe my issue (I'm on SCCM 2012 R2 still), the symptom was pretty close to what I was seeing. We gave "Workaround 1" from this article an attempt and knock on wood, it seems to have solved our issue. I'll give you instructions / screenshots for the Dell Optiplex 7050.
We have a step (highlighted yellow) in our TS for Apply 7050 Driver Package (we are using the Dell Enterprise CAB driver pack from http://en.community.dell.com/techcenter/enterprise-client/w/wiki/2065.dell-command-deploy-driver-packs-for-enterprise-client-os-deployment) that uses the traditional driver package step with a WMI Query for SELECT * FROM Win32_ComputerSystem WHERE Model LIKE "%Optiplex 7050%" that limits it to that specific model. Important notes - we check the boxes for Do unattended installation of unsigned drivers and Continue on error.
Immediately after this step, add in a new Group and call it Retry if Failed - Model Number. Check the box for Continue on error. Then add in two conditions:
1. WMI Query: SELECT * FROM Win32_ComputerSystem WHERE Model LIKE "%Optiplex 7050%"
2. Task Sequence Variable:
a. Variable: _SMSTSLastActionSucceeded
b. Condition: equals
c. Value: false
The second step in the Group will be a new Run Command Line step. Call it DISM - Allow Unsigned - Optiplex 7050 (or Don't Allow Unsigned) and then set the following Command Line:
DISM.exe /Image:%OSDTargetSystemDrive%\ /Add-Driver /Driver:"%_SMSTSPackageCacheLocationA01004E3%" /Recurse /forceunsigned /logpath:"%_SMSTSLogPath%\dism.log"
***Modify the package number listed to indicate your driver package for that specific model of computer***
1. Check box for Continue on error
DISM.exe /Image:%OSDTargetSystemDrive%\ /Add-Driver /Driver:"%_SMSTSPackageCacheLocationA01004E3%" /Recurse /forceunsigned /logpath:"%_SMSTSLogPath%\dism.log"
***Modify the package number listed to indicate your driver package for that specific model of computer***
1. Check box for Continue on error
2. Success Codes - Add codes 2 and 50
3. Add Condition for Set Task Sequence Variable:
a. Variable: OSDAllowUnsignedDriver
b. Condition: equals
c. Value: true (or false if you don't want to allow)
a. Variable: OSDAllowUnsignedDriver
b. Condition: equals
c. Value: true (or false if you don't want to allow)
Once you have completed these steps, take a look at your Monitoring - Deployments and find your task sequence. On some of the computers that image, you'll see that the built in step handles everything fine and this Group is skipped. On other computers that image, you'll see that the built in step failed so the Group ran successfully. In all scenarios that we have tested so far, this method is wildly successful at imaging every newer Dell model as long as it has a Skylake (6th Gen) or older processor.
this post literally saved my sanity today, Thank you!
ReplyDeleteWe started seeing this issue once we upgraded SCCM to the latest CB 1710 from 1702. We have a mixed bag of Dell & Lenovo systems in circulation, but have primarily been seeing this with the Lenovo systems. I followed the steps you've outlined and it worked beautifully on several systems which have been consistently refusing to install the drivers during the task sequence.
Cheers!