Unsolved

This post is more than 5 years old

11813

September 22nd, 2019 16:00

How to write a Driver & BIOS Update script?

Hello,

I'm a helpdesk technician in an organization that is rolling out the Latitude 7390 2 in 1 as a standard issue PC for our users.

We image between 10-20 PCs a week using SCCM Deployment.

Currently our process to install driver and BIOS updates is to download and run Dell SupportAssist and manually go through the steps to bring the system up to date.

I like this tool, but I realize that by default it's setup to connect to the internet and download the required install files on each execution.

Given the number of systems my colleagues and I image on a weekly basis, I am looking to cut down on the time required to do this and streamline this workflow.

Is there a way I could download all the required files to a USB drive and configure a script I could run manually on first boot to install all the required drivers and BIOS updates by invoking a PowerShell or CMD command?

The challenges I foresee are:

1. There appears to be a pre-determined sequence the tool uses to install updates. It will download certain updates, then prompt the user to reboot, then when it's run on the next boot it will continue until everything is up to date.

To avoid issues I'd like to keep this order of operations intact.

2. Periodically there will be new driver and BIOS updates available, and I'd like to make it easy to add these to the process. Perhaps as opposed to writing the script in way that calls each file by name, having the script execute all installers in a certain folder.

I'd like to hear your input on this. If there are any KBs or guides I could follow to set this up, please include those in your reply and I'll try it out.

Regards,

SB

9 Legend

 • 

14K Posts

September 22nd, 2019 17:00

@Start-Bushido  if you go to support.dell.com and search that model, then go to the Drivers & Downloads section and search "Driver Pack", you'll see WinPE 10 and Windows 10 Driver Pack downloads.  The former includes the drivers that might be required for the bootable environment you use to actually image the system.  The latter includes all of the drivers you'd need within "full" Windows.  Since you're using SCCM, the best approach would actually be to create a package of the drivers from the driver pack and then include a driver installation task in your image deployment task sequence that refers to that package.  That way the system will retrieve that package during the imaging process and install whatever drivers are necessary for the system's hardware -- and you can periodically update your driver pack as needed by downloading newer driver packs and using them to update the SCCM package.

4 Operator

 • 

6.2K Posts

September 22nd, 2019 18:00

9 Legend

 • 

14K Posts

September 22nd, 2019 18:00

@Start-Bushido  in addition to my reply above, this video is a nice guide for importing a folder containing multiple drivers (which is what you'd have from downloading the driver pack mentioned above) into SCCM and then adding a driver installation step to an OS deployment task sequence.  If you prefer to read along, this article from Microsoft covers much of the same information.  You might also want to look into the Dell Client Command suite here, which gives you a lot of control over managing and deploying software to Dell systems.

September 22nd, 2019 19:00

Thanks for your reply. That's a great idea. I'm still new to our team. From what I gather so far, though, our imaging team keeps a pretty tight control over the standard images we support, that must support multiple hardware platforms. They typically don't seem to let helpdesk guys fiddle with the images.

For now I'm looking to do what I can within the scope I currently have control over.

Maybe in time when I build trust within the org we can look at things like proposing implementations of this kind to the master images.

September 22nd, 2019 19:00

Thanks for your reply JP. Indeed, adding an SCCM task would be great, but, at the current time we support various hardware platforms with one image for each image type we use.

I'm a new hire, so though I am still getting the lay of the land, from what I gather the team that handles imaging likes to keep a tight control over the master images, and typically doesn't allow helpdesk techs to alter them. It's a bit of a silo structure, so before I go making these type of requests I want to determine what I can manage fully within the scope of my own control.

9 Legend

 • 

14K Posts

September 22nd, 2019 20:00

@Start-Bushido  SCCM driver installation doesn't require altering the image itself -- that's the beauty of it.  The driver library is maintained in SCCM completely separately and independently from any OS images.  The way it works is that when an OS image is pushed to a system, the same image is always pushed, and then SCCM also pushes the appropriate drivers for that client, which the client installs.  That means:

- You don't have to tinker with images or maintain separate images for each system you want to support just because you want to push drivers.
- If you ever need/want to start deploying an updated driver, you just update the driver in the SCCM driver library, and from that point on, OS deployments to systems that require that driver will get that new driver alongside the same image you've been deploying -- no need to actually update the images themselves.
- If you ever want to start supporting a new system, you just add that system's driver pack to your SCCM driver library, and now you can deploy the same image you already had onto that hardware -- again, no need to touch the image itself.

I would really recommend that you look into this solution, because this is really how it's meant to be done.  Your envisioned solution of using a script is actually more likely to require either maintenance within the images themselves if you want the installations to occur automatically, or require more manual effort from the people deploying those images, which is a waste of people's time.

The only thing you have to do is add a driver installation task to the OS deployment task sequence itself, but again that's not a change to the image.  A task sequence is essentially a script that gets used to deploy an image -- and task sequences can also be modified completely separately from the image they're deploying.  If you haven't already, I would encourage you to watch the video and/or read the article I linked earlier to see how this actually works.  And share it with anyone else in the IT department who would need to sign off on this, although they should already know how to do this, frankly.  It's a fundamental image deployment best practice, so I'm surprised it hasn't been implemented.

9 Legend

 • 

14K Posts

September 22nd, 2019 20:00

@Start-Bushido  ok, if you really can't get any traction with whoever is running SCCM in your environment, I've thrown together a basic PowerShell script that should at least save you some time -- although it's still much more of a hack-y and tedious solution compared to the way it's supposed to be done.  I would really encourage you to read my immediately previous post if you haven't already, because it might help you get a clearer understanding of how the intended process actually works and help the iron-fisted imaging team give you some leeway once they realize that you won't have to touch their images.

The script below assumes you've downloaded all of the individual EXE installers for any drivers/firmware updates you want to install from support.dell.com.  You specify the location of that folder on the first line, then it gets all EXE files in that folder and runs each of them in sequence.  On the Start-Process line, the "/s" argument means to perform a silent, non-interactive installation, and to my knowledge all driver and firmware packages that are delivered in Dell's standard DUP (Dell Update Package) format support that argument.  The Wait parameter causes the script to wait until that process ends before continuing onward, which in this case would start the next EXE.  If you didn't have that parameter, the script would start all discovered EXEs at the same time.  The Write-Progress line and some of the script before it is just there so that the script will be able to tell you how far along it is on working through the EXEs it found, otherwise you wouldn't really know.

Even if a given driver package requires a reboot, it shouldn't actually force one or prevent subsequent drivers from being installed until you perform a reboot.  When I run these updates manually, I'm able to run as many as I want without being forced to reboot.

The reason I said this is still a bit of a hack is because it assumes that all EXEs in the target folder will support the "/s" argument (which is admittedly a safe bet) but also because it assumes you will want to run every EXE in the specified folder -- so be careful what you put into that folder.  And even though it loops through each driver automatically, you still have to fire it off and wait for it to complete.  But if you want to use it, copy/paste the text below into a file and set the extension to PS1.  You'll also need to enable script execution on the system.  To do that, open an elevated PowerShell Console session and run "Set-ExecutionPolicy Unrestricted".  Good luck, and hopefully this is just a temporary solution at most for you.

 

$DriverFolder = "C:\Drivers"
$Drivers = Get-ChildItem $DriverFolder | where {$_.Extension -eq ".exe"}
$DriversTotal = $Drivers.Count
foreach ($Driver in $Drivers)
{
    $DriverFileName = $Driver.Name
    $DriverPath = $Driver.FullName
    $DriverCount++
    Write-Progress -Activity "Installing..." -Status "($DriverCount / $DriversTotal) $DriverFileName" -PercentComplete ((($DriverCount - 1) / $DriversTotal) * 100)
    Write-Output "Installing $DriverFileName"
    Start-Process $DriverPath -ArgumentList "/s" -Wait
    Write-Output "Installed $DriverFileName"
    Write-Output ""
}

 

 

 

 

September 23rd, 2019 08:00

This sounds like it could work for us. Lemme give this a try and get back to you with my results ^__^

 

SB

9 Legend

 • 

47K Posts

September 23rd, 2019 09:00

Dell is not allowing their drivers to be downloaded especially to embargo'd countries on NON DELL systems.

 

September 23rd, 2019 09:00

When I try downloading the driver pack I found for the 7390 2 in 1, the Dell support site seems to require users to install SupportAssist first. My workstation isn't a Dell, and I'd rather avoid installing SupportAssist on it.

Is there a way to download drivers without having SupportAssist installed?

9 Legend

 • 

14K Posts

September 23rd, 2019 09:00

@Start-Bushido  if you're planning to use my script, note that I called out that it assumes you've got the individual EXE packages for the drivers you want to install.  The driver pack is a CAB archive that is meant to be used for setting up a driver library.  The contents of the CAB would not work for a scripted install within Windows because the tools Microsoft provides for importing "raw" drivers like those included in the CAB do not support installing drivers into a running instance of Windows.  They're meant for installing drivers into a mounted image file or during an OS deployment process.  So if you want to use that script, get the individual EXEs.

But if you're trying to get the driver packs for an SCCM process, I'm not sure what issue you're having.  I can go to support.dell.com, type "Latitude 7390" in the search box, select the 2-in-1 option that appears in results, click the Drivers & Downloads tab, enter "driver pack" into the search box there, and then click the Download button next to either the Win10 or WinPE 10 driver pack, and I immediately get a download prompt for a file.

September 23rd, 2019 13:00

Dell driver download issue.png

 

When I select files to download, I see the option to Download and Create ISO, which is greyed out but clickable. When I try to click that option, nothing happens.

The second option is Download Only, and this is what I see when I click on that. The site seems frozen and the none of the progress bars ever move.

Note that I am logged in, and this happens no matter if I select one file or multiple files.

I'm getting the impression that downloading driver files from Dell is more complicated than it needs to be.

There's no FTP site or anything where users can find driver files?

 

 

9 Legend

 • 

14K Posts

September 23rd, 2019 14:00

@Start-Bushido   I can't see the screenshot you uploaded since they're initially only visible to the person who uploaded them and to Dell forum moderators until they get "approved", but instead of checking all the boxes to create essentially a "download cart" that the Dell server then has to package for you, even if you only select one item, just click on the Download button to the right of each file you want to download -- which is what I described in my post above.  That essentially is the basic download you're asking for.  It's not FTP anymore because FTP is being deprecated (Google is about to remove FTP support from Chrome entirely, fyi), but it's a basic HTTP file download.  In fact if you hold your mouse cursor over that download button, you can see the direct link to that exact file.

No Events found!

Top