Injecting Drivers during audit mode for syspreping Windows 7 and then Fogging
I just got a new job, and i’m tasked with managing dozens of hundreds of types of pc’s. Much more different than me managing just the 3 schools before. My question is, when building a base image, I want to be able to take that base image (that i fogged in audit mode) and insert specific drivers for the hardware that I will be deploying that on. Can anyone give me a few pointers or point me in the right direction as to how to do this? My goal is that once I FOG the new image to a machine, windows will search for drivers for hardware for that specific machine and locate them no problem. I hope I’m making myself understandable. Any help is much appreciated!!
Very nice script!
For info, the vbscript function we use to check for presence of a particular device id is below.
This allows us to install the associated software as well rather than just the inf files.
the command line utility Devcon is available from Microsoft at the following link.
ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(Wscript.ScriptName))
cmd=Scriptpath & “drivers\devcon find " & device & “*”
Set oShell = CreateObject(“WScript.Shell”)
set rexec= oShell.exec(cmd)
if(InStr(1,strtext,“NO MATCHING DEVICES FOUND”,1) >0 )Then
Good news! There was nothing wrong with the script. It deleted the Drivers folder after they installed collect along with the unattend.xml. Thanks for everyone’s help! it wasn’t until I pushed the image to a different model PC that I noticed it worked correctly. The first one I was using as testing grounds, apparently is missing a driver. Thanks Again!
Myself, Tom and james are looking to working on this as a plugin potentially may take sometime… just watch this space :)
Very interesting Lee,
Can you go into more detail on the process of this for everyone?
Very intriguing and interesting.
If you’re up to the challenge, just do like we normally do.
…i’ll speak to Tom about maybe getting something implemented so any “options/pre-reqs” aren’t hard coded and you can set them from the Web GUI i.e. folder path (C:\Drivers) and maybe have a “Driver Management” page so you can manage the folders without having to do it all back end on the server.
it also means you do not have to run an additional script after sysprep and i build my images on a VM so that there is bare minimum drivers on the image during audit mode - also means again image can stay small for faster deploys.
I do exactly the same to handle drivers except i get the init.gz to detect the machine model, download the relevant drivers folder (drivers in .inf form) from the closest node and then add the registry entry to devpath so all drivers (as long as they’re signed) are handled and installed by sysprep that way i can keep the image small and drivers up to date without having to modify the image - also means i can have one image per OS :)
LOL Good thought. And, In the end of the script setupcomplete.cmd script put a wait or a pause command to make the computer wait. Gotta look up the commands. I’ll post my finished solution.
Add a script to the END of the setupcomplete.cmd file that runs another script to remove the fill/folder.
Just keep chaining scripts until you accomplish the goal you desire lol
Everything is working well, but I wanted to remove the driver pack from the machine’s after imaging them because they are almost 2 gigs. So, I wrote a script to remove the unattend.xml file and included to remove the drivers folder. Placed the script in c:\windows\setup\scripts\ folder so it will run automatically after computer finishes its setup.
Real basic, here is what it is -
del /Q /F c:\windows\system32\sysprep\unattend.xml
del /Q /F c:\windows\panther\unattend.xml
rmdir c:\drives /Q /S
I think this is removing the Drivers directory before windows finishes the drivers install. Any better ideas on how I could accomplish this?
Not a problem glad I could be of help!
Like I said it may not be the “conventional” method, but I’m pretty good about finding my ways around things ;)
I just tried this. Man, this works great! Thanks for your help!
Yes it can, well it does. I normally add them in folders so I know what I am doing if I need to point a driver manually :)
Hey Jaymes got another question for you.
I found all my drivers that I believe I need from Dell’s website for this Optiplex 755 (only one of many kinds) and I created a folder called “Drivers” on the root of C. I next edited the registry like you mentioned, adding the ; adding “C:\Drivers”. (without quotes) My question is, the drivers I downloaded are in zip format, so I simply extracted all the drivers into their sub directories under c:\Drivers. Is windows smart enough to search threw sub directories to find the correct info by just pointing it to c:\Drivers?
We do something similar, ie a vanilla w7 image, at the end of the install, we have a VBscript which installs the “known” items, based on the model, after which we check if certain device ids, eg, PCI\VEN_xx&DEV_xxxx, are present, and then run the installer silently with no restart, after which it reboots.
This catches for example desktops with special video cards, or laptops where the same model can have different wireless or 3g card, which also needs its own management utility. For example you need the full ati catalyst suite to get the best from the card, rather than just the bare driver from windows.
Very Awesome. Honestly, I think I like your way better. I’ll get this going. And thanks for the quick response!