DeployEverything Dell Driver Download Automation Tool

Our previously created Dell Download PowerShell script has been wrapped into a GUI and provides additional functionality that you requested, including the ability to manually select the models you wish to download drivers/bios updates for.

The tool automates the following processes;

  1. Query SCCM for a full list of Dell enterprise client products (Optiplex & Latitude) or Import CSV file containing your Dell models for MDT 
  2. Download BIOS updates for each model
  3. Creates a PowerShell Script for the BIOS update
    This allows you to deploy a package in SCCM with a program entry pointing to the PS script. As the PS script is updated with each version, you never need to worry about updating this.
  4. Create a BIOS Update Package based on machine mode
  5. Download Driver CAB for each model
  6. Extract the Driver CAB
  7. Import the drivers in the extracted CAB folder
  8. Create a Category based on the machine model
  9. Create a Driver Package based on the machine model and filename
  10. Imports the associated drivers into the newly created Driver Package

The job progress log window will automatically scroll at each step of the process and provide feedback.

Validation Error Screenshot
Job Complete Screenshot

 

Microsoft Script Library Link –https://gallery.technet.microsoft.com/Dell-Driver-Automation-Tool-dddf1493

How To Run The Script

Launch the script from an administrative PowerShell window using an account with rights to your SCCM site server (if using the SCCM query option).

If you are using the tool for SCCM, the script will use the current machine name as the SCCM site server name, if this is run on a different machine delete this and type in your site server name. Clicking on Find Models will then query SCCM and return a list of Dell Products for you to select.

If you are an MDT house and wish to import a CSV containing a list of models, simply create a CSV with a single column and header row listed as “Model”, example below:

Things To Note

  1. Downloads are transferred via Bits and require direct internet access. If you require access via a proxy please provide this feedback and we will add this into a later release.
  2. Background jobs and multi threading are not yet in this release. If you require this functionality for now you can use the PS script on our earlier post – http://deployeverything.com/dell-ps-automation-driver-download-import-script-for-mdt-and-sccm/
  3. Import driver jobs can take considerable time, this is the same for OEM tools but something to be aware of as the GUI remains static during this process at present. If you are downloading drivers for multiple models you might wish to run this overnight.
  4. Jobs for “Both” and “MDT” are restricted to “Drivers” only.

Change Log

Version 1.0 – Initial release
Version 1.1 – Changed style to tabs and added drop down list for selecting unknown models from the full Dell Optiplex, Latitude and Precision model list.
Added fix up logic for model AIO, 2-in-1 and other non-standard models when downloading SCCM driver
Version 1.2 – Bug fixes
Version 1.3 – Log File Creation (Created in %temp%\DeployEverythingDellLog.txt)
Version 1.4 – Proxy Server Settings Added
Version 1.5 – Added XPS Models As Requested
Version 1.6 – MDT Import Fix
Version 1.7 – Proxy Server Settings Changed to use NTLM where possible. Added download KB and percentage progress for driver pack downloads.
Version 1.8 – Added Driver Import INF Updates for SCCM Import Process
Version 1.9 – Added Download Only Option


New Feature : Full Dell Optiplex, Latitude & Precision listings

Added logic to cater for special models eg. “Rugged” when downloading SCCM Driver Packages

New Feature: Proxy Server Support

Feedback

Please pass any feedback on this tool to info@deployeverything.com

Driver Packages – Post Script Run

sccmdriverslist

Driver Package Contents

sccmdriverslist2

MDT Job

MDT Drivers Post Script Run

mdtonlyscreen3

mdtonlyscreen4

Driver Download Folders

BIOS Update & PowerShell Update Script

respository2

Model Folder – Sub-Folders created for BIOS, Driver Cab and Extracted Drivers (Dell Revision Number)

respository1

Driver Cab Folder

respository3

 

Maurice Daly
Maurice has been working in the IT industry since 1999 and was awarded his first MVP Enterprise Mobility award in 2017. Technology focus includes Active Directory, Group Policy, Hyper-V, Windows Deployment (SCCM & MDT) and Office 365.

(5578)

comments
  • Michael Horton
    Posted at 21:01 January 27, 2017
    Michael Horton
    Reply
    Author

    Very interesting program…. When I point it at our site server and click on Find Models it returns an “Error: No Dell Client Models Found. Please check the Site Server name and ensure you have sufficient rights.” I’m running this from my workstation using my credentials that has rights to the site server.

    • Maurice Daly
      Posted at 21:04 January 27, 2017
      Maurice Daly
      Reply
      Author

      Hi Michael. I’m aware of this and I’ll look at / fix the issue as soon as possible. For now please run on your site server.

    • Maurice Daly
      Posted at 07:48 January 28, 2017
      Maurice Daly
      Reply
      Author

      Hi Michael. The script has been corrected and should now read the WMI of the site server specified, please make sure the account you are running the PS script as has rights to the site server when running.

      • Adrian Moss
        Posted at 13:40 January 30, 2017
        Adrian Moss
        Reply
        Author

        Hi Maurice is this still an issue as I have downloaded today and getting the same error

        • Maurice Daly
          Posted at 13:56 January 30, 2017
          Maurice Daly
          Reply
          Author

          Adrian,

          Apologies. I had corrected the issue in the script previously but didn’t add this into the original build source script. I have just added back in the fix.

          Thanks for spotting that!.

          Maurice

          • Martin
            Posted at 20:10 February 1, 2017
            Martin
            Author

            Same error message for me too. Version 1.2 Generated on 27/01/2017

          • Maurice Daly
            Posted at 21:26 February 1, 2017
            Maurice Daly
            Author

            Hi Martin,

            Could you let me know what happens when you run this on your site server ? – Get-WmiObject -ComputerName YOURSERVERNAME -Namespace “rootSMSsite_YOURSITECODE” -Class SMS_G_System_COMPUTER_SYSTEM | Select-Object -Property Model | Where-Object { ($_.Model -like “*Optiplex*”) -or ($_.Model -like “*Latitude*”) -or ($_.Model -like “*Precision*”) }

            Maurice

          • Martin
            Posted at 15:13 February 2, 2017
            Martin
            Author

            I get no result at all in powershell. I don’t have any Dell models in my DEV environment. The only model I have is a Surface pro 3. I just want to test your tool and add the models in the list then import everything in SCCM.

          • Martin
            Posted at 15:25 February 2, 2017
            Martin
            Author

            I think I’ve found the issue in your script. Instead of : “# Add model to ArrayList if not present if ($Models -ne $null)” I changed it to “# Add model to ArrayList if not present if ($Models -eq $null)” Could it be it?

          • Maurice Daly
            Posted at 15:36 February 2, 2017
            Maurice Daly
            Author

            Hi Martin,

            This isn’t a bug. The script is designed to connect to SCCM and obtain a list of Dell hardware, if no Dell hardware is found then the “No Models Found” result is shown. In regards to the if ($Models -ne $null) this again is used to determine if there are Dell models when building the array.

            I will be modifying the code to allow for non Dell SCCM environments to download the driver packs in a future build.

            Regards

            Maurice

  • Jes
    Posted at 21:39 January 27, 2017
    Jes
    Reply
    Author

    any plans on getting this going for other manufacturers?

    • Maurice Daly
      Posted at 22:26 January 27, 2017
      Maurice Daly
      Reply
      Author

      The real problem here is finding a way to interrogate manufacturer websites to achieve this. So far Acer is the only other manufacturer I have found that have websites which can be parsed to get links to the driver downloads. In their case the exe files can be extracted and imported. If manufacturers had a standard driver pack response file available then a multi manufacturer tool would be easy to build.

  • Mark
    Posted at 21:18 January 28, 2017
    Mark
    Reply
    Author

    looking really good. what does this look like in the sccm driver store? we move all drivers in the driver store to respective folders for example DellE7470 x64chipset ,  DellE7470 x64Nic , ect…

    Also the dell cabs have much bloat and drivers for hardware variation that we would not add to out driver store to save storage on our DP’s.

    Would it be possible to run this tool on a reference model instead of using the CSV to interrogate the local hardware ID’s and only inject the discrete drivers need?

    • Maurice Daly
      Posted at 23:35 January 28, 2017
      Maurice Daly
      Reply
      Author

      Hi Mark,

      If you scroll down the post you will see the driver packs as they look in the console. The packs are created in the following format MODEL – OPERATING SYSTEM – ARCHITECTURE. As for the individual drivers in the driver store, they are added to the root store and given categories in the following format – MODEL – DRIVER REVISION. It could be easily tailored however to create / store drivers in sub-folders.

      Unfortunately your use case scenario was not really what this tool was intended for.

      Maurice

  • Jason
    Posted at 00:21 January 30, 2017
    Jason
    Reply
    Author

    Awesome work! Thank you for sharing with everyone. Quick question- Latitude and Optiplex only? Dell Precision desktops will be excluded?

    • Maurice Daly
      Posted at 00:43 January 30, 2017
      Maurice Daly
      Reply
      Author

      Hi Jason. That can be easily rectified, minor oversight. I’ll add them into the latest build going up on the site in the morning.

  • Michael
    Posted at 14:00 January 30, 2017
    Michael
    Reply
    Author

    When I try to run DellAutoDownloadGUI.ps1 I receive this:

    You must provide a value expression on the right-hand side of the ‘-‘ operator.
    At C:DeployEverything Dell Driver Download Automation Tool For SCCMDellAutoDownloadGUI.ps1:749 char:18
    + if ($Model – <<<< notin $DellProducts)
    + CategoryInfo : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : ExpectedValueExpression

    • Maurice Daly
      Posted at 14:54 January 30, 2017
      Maurice Daly
      Reply
      Author

      What version of PowerShell are you running?.

  • Adrian Moss
    Posted at 15:02 January 30, 2017
    Adrian Moss
    Reply
    Author

    Hi Maurice is there still a permissions issue as I have downloaded today and getting the same error when trying to connect through to the site server with a valid account

  • soetie
    Posted at 15:03 January 30, 2017
    soetie
    Reply
    Author

    Hi THanks for the tool. Is it also possible to use the tool without sccm. Only for MDT? Or do i need sccm. My download button is stil greyed out.

    • Maurice Daly
      Posted at 15:23 January 30, 2017
      Maurice Daly
      Reply
      Author

      Yes it is possible to use the tool standalone with MDT. As for the download button, this only becomes enabled once you select a CSV to import containing your model lists.

      • Patrick
        Posted at 15:57 February 10, 2017
        Patrick
        Reply
        Author

        Hi, I’m trying to use your tool for MDT as well. Importing a CSV file doesn’t populate the list. Am I missing something?

        • Maurice Daly
          Posted at 16:18 February 10, 2017
          Maurice Daly
          Reply
          Author

          Hi Patrick,

          Sorry about that, I had moved some functions around in the proxy update and forgot to update the MDT section. The code has been updated, version 1.6 is up on the MS Script Library now and resolves the issue.

          Maurice

          • Patrick Nuckle
            Posted at 19:00 February 10, 2017
            Patrick Nuckle
            Author

            Thanks for the quick response Maurice. The list is populating now and I was able to launch a Download. I see that a Latitude E6440 Folder along with a Driver Cab sub-folder were created. The .tmp file size in it has not increased for the past 2o minutes. Also, the GUI progress bar is not moving. I think the process is frozen somewhere. The file is a little over 832MB.
            Question: Is it supposed to take that long, and should it automatically import drivers into my MDT once done?
            FYI: Manually entering proxy and ID info doesn’t work, but not specifying any seems to work. Our IE configuration is using a pac file.

          • Maurice Daly
            Posted at 19:18 February 10, 2017
            Maurice Daly
            Author

            Hi Patrick it sounds like the bits job has timed out on your proxy. Try starting it again, I am going to add in more checks in the bits job in the next release.

            In regards to importing into MDT, once the file is downloaded it will import the CAB file directly into MDT. It can take a while to do this, the process would be the same via the MDT console though. The speed of the download is also dependant on your BITS settings deployed via GPO.

            I’ve tested the script through a McAfee web gateway with no issue but there are a lot of different configurations so it could be something as simple as your username formatting etc. It’s hard to test for every eventuality but again I’ll add further logic into the next release.

          • Patrick Nuckle
            Posted at 19:27 February 10, 2017
            Patrick Nuckle
            Author

            One last thing Maurice. Is there a way to stop the script before it imports into MDT, or at least to configure it to imports using my custom MDT folder structure? I’m concerned about letting a script touch our Deployment Share!! Also, looking forward to the Lenovo version since most of our new systems are now Lenovo.
            Thanks

          • Maurice Daly
            Posted at 19:31 February 10, 2017
            Maurice Daly
            Author

            The script is designed to automate the entire process so there isn’t an opt out as such. You could edit the script to suit your naming convention, the one coded in the script uses OSMakeModelRevision as per the screenshots on the blog. Look over the MDT sections on the script and you’ll see clearly what it is doing, I understand your concerns though.

  • George Salambassi
    Posted at 16:54 January 30, 2017
    George Salambassi
    Reply
    Author

    Hi Maurice, Amazing script, how would I add a Bios password

    • Maurice Daly
      Posted at 17:32 January 30, 2017
      Maurice Daly
      Reply
      Author

      Hi George,

      You could specify a password in the PowerShell scripts created during the process. If you add -p:PASSWORD to the end of the following line;
      $BIOSSwitches=” -noreboot -nopause ”

      In my environment however I blank out the password in the BIOS using CCTK prior to the bios update, then inject the password back into the BIOS in a follow up step.

  • Simon Brouillard
    Posted at 19:32 February 6, 2017
    Simon Brouillard
    Reply
    Author

    Hi Maurice,

    this is a really nice tool, thx for sharing!!!

    Could you please add the ability to use it with a proxy? Also, not sure if it’s already there, but if not I think it could be nice to output the log from the GUI to a folder?

    Thx
    Simon B.

    • Maurice Daly
      Posted at 21:43 February 6, 2017
      Maurice Daly
      Reply
      Author

      Hi Simon,

      Thanks and no problem for sharing, that is what the community is for!. I’ll be adding an updated version with proxy support and additional logging in the next few days.

      Maurice

    • Maurice Daly
      Posted at 15:55 February 7, 2017
      Maurice Daly
      Reply
      Author

      Version 1.4 is up on the site now with proxy server support.

      • Simon Brouillard
        Posted at 14:53 February 8, 2017
        Simon Brouillard
        Reply
        Author

        thx Maurice it work great, the only thing is, some of the .cab files aren’t downloaded. When I look at the log file here’s what I got;

        Retrieving SCCM Driver Pack Site For Model: OptiPlex 3040
        URL Found: http://en.community.dell.com/techcenter/enterprise-client/w/wiki/11768.optiplex-3040-windows-7-driver-pack
        Creating OptiPlex 3040 download folder
        Downloading 3040-WIN7-A04-V62F1.CAB 3040-WIN7-A01-F6YXX.CAB driver cab file
        Downloading from URL: http://downloads.dell.com/FOLDER03988894M/1/3040-WIN7-A04-V62F1.CAB http://downloads.dell.com/FOLDER03612835M/1/3040-WIN7-A01-F6YXX.CAB
        Creating driver package
        Expanding Driver CAB Sourece File: \BHZ-FS-SCCMDEPLOYDRIVERSOURCEDellOptiPlex 3040Driver Cab3040-WIN7-A04-V62F1.CAB 3040-WIN7-A01-F6YXX.CAB
        Expanding Driver CAB Destination Directory: \BHZ-FS-SCCMDEPLOYDRIVERSOURCEDellOptiPlex 3040A04

        Then Cab folder is created but empty, maybe you can add a validation step prior to create the CM package, well something like;

        $directoryInfo = Get-ChildItem C:temp | Measure-Object
        if($directoryInfo.count -eq 0) {“Blabla”}

        regards,
        SImon

        • Maurice Daly
          Posted at 15:08 February 8, 2017
          Maurice Daly
          Reply
          Author

          Hi Simon,

          I’ll drop you a mail on this. This might be an issue with BITS transfers not completing in the background via the proxy. So we might need to do some tests or try with invoke-request method as an alternative.

          Maurice

  • Jesper
    Posted at 08:19 February 8, 2017
    Jesper
    Reply
    Author

    Hi Maurice,

    Very cool tool you have build.

    Just tried to use it to import BIOS update for Latitude 5480, but got the dock FW instead: “DellDockingStationFwUp_1.0.0.8_20161220_WD15.exe”

    Looks like something needs to be corrected, as the correct file would have been:
    “Latitude_5X80_Precision_3520_1.1.1.exe”

    Br
    Jesper

    • Maurice Daly
      Posted at 09:14 February 8, 2017
      Maurice Daly
      Reply
      Author

      Hi Jesper,

      I had a look at this and found that the older model Latitude BIOS links differ from the more recent ones. When selecting the latest BIOS link from the page it uses two terms, *BIOS* and *Windows* to download the latest BIOS update for Microsoft Windows. The issue is that in your example the most recent BIOS link is structured as below;

      outerHTML :
      tagName : A
      HREF : /FOLDER04148724M/1/Latitude_5X80_Precision_3520_1.1.1.exe

      So could you please modify the following line of the script as per the below;

      $BIOSDownload = (Invoke-WebRequest -Uri $ModelURL -UseBasicParsing).Links | Where-Object { ($_.outerHTML -like “*BIOS*”) -and ($_.outerHTML -like “*WINDOWS*”) } | select -First 1

      to

      $BIOSDownload = (Invoke-WebRequest -Uri $ModelURL -UseBasicParsing).Links | Where-Object { $_.outerHTML -like “*BIOS*EXE*”} | select -First 1

      Ultimately I might need to put a condition to check for the word “Windows” also to avoid any Linux BIOS packages that might be on the site, but if you could test that and let me know how you get on.

      • Jake Dunn
        Posted at 15:35 March 2, 2017
        Jake Dunn
        Reply
        Author

        Hi Maurice, thanks for this great script. In regards to that update to look for *Windows* it looks like that causes a few models to not grab the latest BIOS. Example is the Optiplex 760 as the latest BIOS A16 titles the download as “Flash BIOS Executable” while the A12 and older use “CPG BIOS Executable for Windows/DOS”.

        • Maurice Daly
          Posted at 16:21 March 2, 2017
          Maurice Daly
          Reply
          Author

          Hi Jake. It sounds like a bug that was in it before due to posts within the comments which I corrected. I’ll have a look later on.

  • Brad
    Posted at 17:17 February 9, 2017
    Brad
    Reply
    Author

    This tool is awesome! Im sure Im just not quite doing something right, but it is creating the folder structure on the shares, but nothing gets imported into SCCM and there are no errors. I have full Administrator rights. Any ideas?

    • Maurice Daly
      Posted at 17:35 February 9, 2017
      Maurice Daly
      Reply
      Author

      Hi Brad are you using a proxy? I’ve seen a couple of instances where bits jobs are timing out via the proxy. I was going to add in error checking for this in the next update.

      • Brad
        Posted at 17:39 February 9, 2017
        Brad
        Reply
        Author

        No proxy. All of the cab files are being downloaded and extracted. It creates the “Package”folder, but doesnt do anything within SCCM. We have a CAS, does that matter?

        • Maurice Daly
          Posted at 17:45 February 9, 2017
          Maurice Daly
          Reply
          Author

          I haven’t tested it with CAS but it shouldn’t matter. If you send over the log file generated in the %temp% directory I’ll take a look for you. Email it to info@deployeverything.com.

          • Brad
            Posted at 19:49 February 9, 2017
            Brad
            Author

            Sent. Let me know if you see anything.

          • Brad
            Posted at 20:17 February 9, 2017
            Brad
            Author

            We rebooted the server and it looks like it is coming in now! Thank you so much for such a great tool!

          • Maurice Daly
            Posted at 20:21 February 9, 2017
            Maurice Daly
            Author

            Ha.. when in doubt, plug it out.. Good to hear everything is working now. You’re more than welcome for the script, I figure if it helps me, it will help others.

  • jayconnor
    Posted at 03:06 February 16, 2017
    jayconnor
    Reply
    Author

    Hi Maurice,

    When not running from the site server, nothing actually downloads but the driver package is created. I can troubleshoots it if it’s not a known issue. It might just be my machine/OS server 2016

  • jayconnor
    Posted at 03:37 February 16, 2017
    jayconnor
    Reply
    Author
  • Marty
    Posted at 14:58 February 22, 2017
    Marty
    Reply
    Author

    Hi Maurice, Another bug the categories name include comma and are not supported.
    Maybe use a dash instead of commas.

    • Maurice Daly
      Posted at 15:15 February 22, 2017
      Maurice Daly
      Reply
      Author

      When you say “not supported”, do you have a reference document on this?.

  • Travis Phipps
    Posted at 15:14 February 26, 2017
    Travis Phipps
    Reply
    Author

    Thanks for sharing such an awesome tool!
    I’m running into an issue getting the MDT import to work correctly. The download works fine, and the categories are created correctly in MDT, but the actual import of the CAB into MDT seems to not take place. The script is showing proper completion/success (no error messages). But the processes finishes WAY too fast to actually do the import and of course when viewing the MDT categories, they are empty.
    Is there any additional log I can check to see what’s happening?

    • Maurice Daly
      Posted at 14:36 February 27, 2017
      Maurice Daly
      Reply
      Author

      Hi Travis can you send through the log generated in the temp folder so I can have a look.

  • Leave a Reply