Jump to content


IT-Hilger

SCCM 2012 OSD Apply Driver Packages without importing them to the Database

Recommended Posts

Hi Everybody,

 

this thread is for those who want the old SCCM 2007 driver management back.

Normally you have to import every driver to the database first, put them into a driver package, and then deploy them during OSD.

In SCCM 2007 you could easily create a Driver Package from your Driver Source Folder and apply this Driver Package during OSD.

This way of Driver Management was much easier and more reliable than the new way in SCCM 2012.

 

But luckily there is still a method to prevent importing drivers into database and directly distribute driver packages to your clients.

 

Step 1

Download drivers for your brands and models.

Put them into seperate folders - one folder for one model - like you did in SCCM 2007

 

post-24205-0-69833100-1403683770_thumb.png

 

Step 2

Create a Package for each model and operating system. Then distribute this packages to your DP.

 

post-24205-0-99845800-1403684096_thumb.png

 

post-24205-0-02203500-1403684101_thumb.png

 

Step 3

Create a Step "Set Task Sequence Variable" under your Auto Apply Drivers Group (after the Apply Operating System Step) in your Task Sequence.

 

Task Sequence Variable: winrootdir

Task Sequence Value: D:\

 

Condition: If Folder "D:\Windows" exists

 

I created a second step after this with Drive Letter E:\. Because on some Notebooks the Systemroot is E:\ during OSD.

 

post-24205-0-30412000-1403684788_thumb.png

 

post-24205-0-87966600-1403684788_thumb.png

 

Step 4

Create TS Steps for each model to apply the driver package.

 

Type: Run Command Line

Command line:

DISM.exe /Image:%winrootdir% /Add-Driver /Driver:.\ /Recurse

Package: Choose the corresponding package you created in step 2

 

Success codes: Add 2 and 50

Condition: WMI Query (here an example for Dell Latitude E7240)

select * from win32_computersystem where Model like "Latitude E7240%"

post-24205-0-32635100-1403685338_thumb.png

 

post-24205-0-80516300-1403685338_thumb.png

 

 

Repeat the steps above for each computer model you want to image.

With this way of applying drivers we have 0 problems in our environment. Very easy and reliable.

 

BR

Achim

 

If you have questions - feel free to contact me http://ithilger.de/kontakt

  • Like 2

Share this post


Link to post
Share on other sites


I am trying and seeming to be having some issue. i have followed what you did and wondering if I am missing a step? i made just a simple task sequence and seem to be erroring out due to drivers for the nic card. now it is just a regular installation of Windows 7 no fancy setup just straight from the DVD. here is my task sequence. i have checked drives and since i preserve the drive letter it is the C drive i believe i am looking for.

 

post-5927-0-88512800-1430829675_thumb.jpgpost-5927-0-95879900-1430829676_thumb.jpgpost-5927-0-91684200-1430829677_thumb.jpgpost-5927-0-88411300-1430829678_thumb.jpgpost-5927-0-83867400-1430829679_thumb.jpg

Share this post


Link to post
Share on other sites

It looks like your WMI Query is wrong Jeff. You are calling for a ComputerSystemProduct version when what you should be doing is calling for the "Model" of "ComputerSystem"

Share this post


Link to post
Share on other sites

Kinda - he's right, as far as he goes. Lenovo does it their own way, different from everyone else.

 

Dell, HP, and anything else I've ever run across uses Model to store something meaningful for comparison - "Optiplex 7010," etc.

 

Lenovo, however, uses Model for a specific version of a model.

E.g. my X1 Carbon has "3444CUU" in there, but I need to look in ComputerSystemProduct's Version to get "ThinkPad X1 Carbon." Same for our M9x's and every other recent Lenovo I've worked with.

Share this post


Link to post
Share on other sites

Why would you want to do this? Reinventing the wheel.

 

You save a ton of disk space if you have many and large driver packages.

Share this post


Link to post
Share on other sites

 

You save a ton of disk space if you have many and large driver packages.

 

Also prevents auto-detection from picking the wrong driver because it thinks it's better.

 

Example: Lenovo T440 driver package has a chipset driver that gets auto-picked because it's "better" when deploying to Dell Optiplex 7010s. Except that the "better" driver causes a BSOD on the 7010 units. We can get around that with category filtering, but that means that either we need to have separate task sequences for the different models, or we have to edit the TS to enable/disable the appropriate category before deployment. Using WMI filters like this, everything just works.

Share this post


Link to post
Share on other sites

Yes, I cant get this to work. I have Lenovo machines, when I go and use the windows 7 dvd as an install source and it comes to this section I get no IP for my nic card and it fails.now it cant be a driver issue with winpe cause I made it to the apply drivers section.

Share this post


Link to post
Share on other sites

Hi! This is a very good idea! I love it! Thanks! I hate the driver repository integrated with ConfigMgr out-of-box. For this winroot thing: In "Patition Disk" step you can set OSDisk. For dism use

dism.exe /Image:%OSDisk%\ /Add-Driver /Driver:.\ /Recurse

 

What I cound'nt find: What means success code 2 50? Can you explain? Thanks!

  • Like 1

Share this post


Link to post
Share on other sites

Hi! This is a very good idea! I love it! Thanks! I hate the driver repository integrated with ConfigMgr out-of-box. For this winroot thing: In "Patition Disk" step you can set OSDisk. For dism use

dism.exe /Image:%OSDisk%\ /Add-Driver /Driver:.\ /Recurse

 

What I cound'nt find: What means success code 2 50? Can you explain? Thanks!

 

Hi Dietmar,

 

nice to hear, thanks. Nice idea with OSDisk variable!

DISM sometimes gives return code "2" or "50". By default, SCCM TS just takes "0" and "3010" as success codes.

When you don't add the return codes 2 and 50 as success codes, the apply drivers works fine, but SCCM thinks that there was an error because it doesn't know that this return codes also mean success.

Share this post


Link to post
Share on other sites

Yes, I cant get this to work. I have Lenovo machines, when I go and use the windows 7 dvd as an install source and it comes to this section I get no IP for my nic card and it fails.now it cant be a driver issue with winpe cause I made it to the apply drivers section.

 

Hi Jeff,

 

after which step you get stuck with no IP adress?

In WinPE phase or after applying the Windows image?

Share this post


Link to post
Share on other sites

Hi Everybody,

 

this thread is for those who want the old SCCM 2007 driver management back.

Normally you have to import every driver to the database first, put them into a driver package, and then deploy them during OSD.

In SCCM 2007 you could easily create a Driver Package from your Driver Source Folder and apply this Driver Package during OSD.

This way of Driver Management was much easier and more reliable than the new way in SCCM 2012.

 

But luckily there is still a method to prevent importing drivers into database and directly distribute driver packages to your clients.

 

Step 1

Download drivers for your brands and models.

Put them into seperate folders - one folder for one model - like you did in SCCM 2007

 

attachicon.gifdriver-folders.PNG

 

Step 2

Create a Package for each model and operating system. Then distribute this packages to your DP.

 

attachicon.gifdriver-package1.PNG

 

attachicon.gifdriver-package2.PNG

 

Step 3

Create a Step "Set Task Sequence Variable" under your Auto Apply Drivers Group (after the Apply Operating System Step) in your Task Sequence.

 

Task Sequence Variable: winrootdir

Task Sequence Value: D:\

 

Condition: If Folder "D:\Windows" exists

 

I created a second step after this with Drive Letter E:\. Because on some Notebooks the Systemroot is E:\ during OSD.

 

attachicon.gifcreate-variable1.PNG

 

attachicon.gifcreate-variable2.PNG

 

Step 4

Create TS Steps for each model to apply the driver package.

 

Type: Run Command Line

Command line:

DISM.exe /Image:%winrootdir% /Add-Driver /Driver:.\ /Recurse

Package: Choose the corresponding package you created in step 2

 

Success codes: Add 2 and 50

Condition: WMI Query (here an example for Dell Latitude E7240)

select * from win32_computersystem where Model like "Latitude E7240%"

attachicon.gifapply-package1.PNG

 

attachicon.gifapply-package2.PNG

 

 

Repeat the steps above for each computer model you want to image.

With this way of applying drivers we have 0 problems in our environment. Very easy and reliable.

 

BR

Achim

 

If you have questions - feel free to contact me http://ithilger.de/kontakt

Hi,

 

if you could help me to creation of package for .exe drivers that will be great, because while driver importing it doesnt take .exe drivers.

 

regards;

Sant

Share this post


Link to post
Share on other sites

Hi,

 

if you could help me to creation of package for .exe drivers that will be great, because while driver importing it doesnt take .exe drivers.

 

regards;

Sant

 

Hi Sant,

 

thats different from (exe) package to package.

You must try to extract them and then use the .inf, .sys and .cat files.

 

You can try to extract the .exe with 7zip for example.

 

If this doesn't work, run the .exe and wait at the first dialog of the .exe program and don't click next.

Then open the %temp% folder on the pc and have a look inside the last modified folder in %temp% folder.

I think you should find the extracted driver files there.

 

BR

Achim

  • Like 1

Share this post


Link to post
Share on other sites

I hate to bump an old post but I found this extremely useful. I think I much prefer this to the native driver package model in terms of manageability - it's a lot cleaner to import and update driver packages. Thanks very much for the guide!

 

One thing though - I had issues with dism working until I removed the backslash off the driver path:

DISM.exe /Image:%osdisk%\ /Add-Driver /Driver:. /Recurse

Share this post


Link to post
Share on other sites

I hate to bump an old post but I found this extremely useful. I think I much prefer this to the native driver package model in terms of manageability - it's a lot cleaner to import and update driver packages. Thanks very much for the guide!

 

One thing though - I had issues with dism working until I removed the backslash off the driver path:

DISM.exe /Image:%osdisk% /Add-Driver /Driver:. /Recurse

 

Hi Max,

 

thanks for your comment!

Great that this solution also works for you. Don't know why you have to remove the trailing backslash, it's working in our environment.

And good idea with %osdisk% variable. Maybe I'll change it in our environment, too.

 

BR

Achim

Share this post


Link to post
Share on other sites

Anyone know if this works with MDT by itself not with SCCM?

 

I didn't test it, but it should.

You only need DISM to do it - and this is independent from SCCM.

Starting with Windows Vista it's built into the OS.

 

BR

Share this post


Link to post
Share on other sites

 

I didn't test it, but it should.

You only need DISM to do it - and this is independent from SCCM.

Starting with Windows Vista it's built into the OS.

 

BR

This solution is working on our environment via TS or MDT on Windows 7.

Has anyone tested it with Windows 10? from smssts logs, I can see driver has been picked up and not getting installed.

Any ideas? everyone...

 

Cheers!

Share this post


Link to post
Share on other sites

This solution is working on our environment via TS or MDT on Windows 7.

Has anyone tested it with Windows 10? from smssts logs, I can see driver has been picked up and not getting installed.

Any ideas? everyone...

 

Cheers!

 

I test it in our W10 TS next week.

I'll tell the results...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...