DeployEverything Driver Download Automation Tool

Following on from the success of the Dell, HP and Lenovo Driver Download Tools I have posted over the past couple of months here is the new multi-vendor version.

The script generates a PowerShell GUI to automate the processes of downloading, extracting and importing driver packages for all three of the previous vendors and I hope to add more with time. The initial version is labelled v2.0 as many of the features that people requested as additional extras were built into the Dell version, so it made sense to build upon that release.

The tool automates the following processes;

  1. Queries XML content from Dell, Lenovo & HP
  2. Provides Driver Downloads for all three
  3. Provides BIOS downloads for Dell only (at present)
  4. Creates a PowerShell Script for the BIOS update
    I have changed this slightly from the earlier Dell verison. I had requests to allow the BIOS package to retain version info, so SCCM admins could select which release to push out rather than using the latest version
  5. Create a BIOS Update Package
  6. Download Driver CAB for each model
  7. Extract the Driver CAB
  8. Import the drivers in the extracted CAB folder
  9. Create a Category based on the machine model
  10. Create a Driver Package based on the machine model and filename
  11. Imports the associated drivers into the newly created Driver Package

The script can be run against SCCM, MDT, both SCCM/MDT or as a standalone driver download utility (by popular request). I have also added notes on the individual tabs as previously people had tried specifying long UNC paths for the repositories and not the base share directory I had advised to use, causing issues with long UNC path names.

Model listings are obtained from XML feeds from the three vendors. I don’t have control over the models listed in them, however if there are models missing, let me know and I will feed it back into them for future updates.

New Features

There are a few new features in this version of the GUI script, these being;

  1. SCCM Driver Packages – Create standard or driver pacakges for your deployments
  2. Cleanup Unused Drivers – Removes drivers not associated with a driver package from your SCCM environment
  3. Remove Superseded Driver Packages – Removes driver packages which have been replaced by a more recent version

Note : Be careful when using the clean up options, as they will impact on your task sequences.

SCCM Driver Package Options

Driver Cleanup Screenshot

Superseded Driver Pack Cleanup

Example: Dell Latitude E5470 A05 and A06 listed
Post Driver Package Cleanup – A05 Removed, A06 is Current

Microsoft Script Library Link – https://gallery.technet.microsoft.com/scriptcenter/Driver-Tool-Automate-9ddcc010

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. Please ensure that you have rights to the SCCM server and shares specified under the account you are using.

  1. Select the Deployment Platform (SCCM, MDT, Both, Download Only) and Download Type
  2. Select the Operating System and Architecture
  3. Click on the Manufacturer Selection tab
  4. Select the Makes you wish to use and click “Find Models”
  5. Select Models and click “Add To Import List”
  6. On the Import List, select the models you wish to download drivers for
  7. Click on the Driver Storage Selection tab
  8. Specify UNC paths to your Driver Repository share (used for downloads and extracts) and your Driver Package share (used for driver packages)
  9. Optionally chose one of the cleanup options in the SCCM Driver Cleanup Options tab
  10. Click on “Start Download and Import Process”

SCCM Driver Import

MDT Driver Import

Things To Note

  1. Downloads are transferred via Bits and require direct internet access or access via proxy. I have included a proxy authentication option for compatibility, however you will need to test this against your own environment and alter as required.
  2. Background jobs and multi threading are not yet in this release.
  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.

 SCCM Job

Driver Packages – Post Script Run

sccmdriverslist

Driver Package Contents

sccmdriverslist2

MDT Job

MDT Drivers Post Script Run;

 

 Driver Download Folders

BIOS Update & PowerShell Update Script

BIOS Folder & PowerShell Contents

 

BIOS Packages including version

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

respository1

Driver Cab Folder

respository3

 

Change Log

Version 2.0 – Initial Public Release
Version 2.1 – Bug Fixes
Version 2.2 – Changed options for SCCM driver packages – Standard and Driver packages
Version 2.3 – Dell x86 Bug Fix, Added Output for Created Packages & Errors
Version 2.4 – HP Bug Fix for models with “/” included. Note that the Z440/Z640/Z840 has issues extracting. This has been raised with HP. Text box controls locked.
Version 2.5 – Re-introduced the Dell WMI call for known models as requested.

Known Issues

  • Special model Dell systems such as ATG, XG and so on have issues obtaining the link for their BIOS download. I am working on this at present.

Support

This is a community tool and as such please by patient when sending over requests or tweets. I do try to accommodate where possible but remote support or troubleshooting sessions are not available hence the “No Support Provided” message.

(3960)

comments
  • Donovan
    Posted at 6:11 pm 1st March 2017
    Donovan
    Reply
    Author

    badass. just sayin

  • zackj
    Posted at 9:28 pm 1st March 2017
    zackj
    Reply
    Author

    very nice. when i run it the import list does not seem to populate after hitting connect to SCCM

    • Maurice Daly
      Posted at 9:32 pm 1st March 2017
      Maurice Daly
      Reply
      Author

      The Dell model lookup was removed in this version as it’s multi vendor. If you go to the manufacturer tab you can select Dell etc then click Find Models and add which ever models you want.

  • Andrew
    Posted at 12:15 pm 2nd March 2017
    Andrew
    Reply
    Author

    Great tool but the Lenovo Links don’t appear to be working.

    • Maurice Daly
      Posted at 4:22 pm 2nd March 2017
      Maurice Daly
      Reply
      Author

      Hi Andrew. They are working here ok. Are you going through a proxy or do you have direct internet access?

      • Andrew
        Posted at 10:06 am 3rd March 2017
        Andrew
        Reply
        Author

        Ok on a different connection it downloaded an X260 Lenovo driver for Win 7 x64. However it failed to extract and I had the following errors:

        C:\windows\system32>PowerShell.exe -ExecutionPolicy Bypass -Command “& ‘C:\Users\Andrew\Downloads\Microsoft\DriverDownloadTool.ps1′”
        You cannot call a method on a null-valued expression.
        At C:\Users\AndrewDownloads\Microsoft\DriverDownloadTool.ps1:432 char:34
        + … ne “MDT”) { $DriverPackageRoot = ($PackagePath.Trimend(“\”) + “\$Make …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

        Exception calling “Substring” with “2” argument(s): “Length cannot be less than zero.
        Parameter name: length”
        At C:\Users\Andrew\Downloads\Microsoft\DriverDownloadTool.ps1:497 char:5
        + … $DriverPackageDir = ($DriverCab | Split-Path -Leaf).Subst …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ArgumentOutOfRangeException

        Get-Process : Cannot find a process with the name “tp_x260_w732_201601”. Verify the process name and call the cmdlet
        again.
        At C:\Users\Andrew\Downloads\Microsoft\DriverDownloadTool.ps1:756 char:18
        + … While (Get-Process -Name $DriverProcess)
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : ObjectNotFound: (tp_x260_w732_201601:String) [Get-Process], ProcessCommandException
        + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

        along with popup Webpage Errors:
        (line: 2 Error: “I” is undefined),
        (Line: 2 Error: the value property “$” is null or undefined, not a function object),
        (Line: 1 Error: ‘jQuery’ is undefined)

        • Maurice Daly
          Posted at 10:25 am 3rd March 2017
          Maurice Daly
          Reply
          Author

          Hi Andrew, send over the log file and I’ll take a look. I’ve just tried downloading the driver and it is currently importing 127 inf files so it’s working here.

          • Andrew
            Posted at 10:32 am 3rd March 2017
            Andrew
            Author

            I was testing using Driver Download only. Where is the log file?

          • Maurice Daly
            Posted at 10:43 am 3rd March 2017
            Maurice Daly
            Author

            It should be in the temp directory of the user profile used to run the script. Labelled DeployEverythingDriverToolLog

          • Andrew
            Posted at 10:52 am 3rd March 2017
            Andrew
            Author

            03 March 2017 09:48:53
            Logging Running…..

            ======== Starting Download Processes ========

            Models selected: Lenovo X260
            Operating System specified: Windows 7
            Operating System architecture specified: x64

            Site Code specified:
            Respository Path specified: \\xxx\OSDTESTING$
            Package Path specified:

            Starting Download,Extract And Import Processes For Lenovo Model: X260

            Download Only: Retrieving SCCM Driver Pack Site For Lenovo X260
            Download Only: URL Found: https://support.lenovo.com/downloads/ds111749
            Download Only: Creating X260 download folder
            Download Only: Downloading tp_x260_w732_201601.exe driver cab file
            Download Only: Downloading from URL: https://download.lenovo.com/pccbbs/mobiles/tp_x260_w732_201601.exe
            Download Only: Downloaded 2816 kB of 187460 kB (2%). Next update in 30 seconds..
            Download Only: Downloaded 27648 kB of 187460 kB (15%). Next update in 30 seconds..
            Download Only: Downloaded 52224 kB of 187460 kB (28%). Next update in 30 seconds..
            Download Only: Downloaded 76800 kB of 187460 kB (41%). Next update in 30 seconds..
            Download Only: Downloaded 101376 kB of 187460 kB (54%). Next update in 30 seconds..
            Download Only: Downloaded 125952 kB of 187460 kB (67%). Next update in 30 seconds..
            Download Only: Downloaded 150528 kB of 187460 kB (80%). Next update in 30 seconds..
            Download Only: Downloaded 175360 kB of 187460 kB (94%). Next update in 30 seconds..
            Download Only: Driver Revision: 201601

            ==================== Download Only DRIVER EXTRACT ====================

            Download Only: Expanding Driver CAB Source File: tp_x260_w732_201601.exe
            Download Only: Driver CAB Destination Directory: \\xxx\OSDTESTING$\Lenovo\X260\201601-Windows7-x64
            Download Only: Waiting For Extract Process To Complete.. Next Check In 60 Seconds

            ======== Finished Processing ========

          • Maurice Daly
            Posted at 10:54 am 3rd March 2017
            Maurice Daly
            Author

            You could have emailed it ;-). Looking at that log the download completed and the driver file was expanded

  • Brian Shelton
    Posted at 1:40 pm 4th March 2017
    Brian Shelton
    Reply
    Author

    How can I manipulate this script, to import drivers into MDT model folder instead of revision folder? I currently use a task sequence variable to pulls the drivers from os/arch/make/model.

    • Maurice Daly
      Posted at 10:05 am 6th March 2017
      Maurice Daly
      Reply
      Author

      Hi Brian,

      If you take a look at lines 1192-1232 you will see the section that is used to create the structure within your MDT deployment share. It would simply be a matter of rearranging the variables to suit your own naming convention.

      Maurice

  • Shelby Price
    Posted at 7:25 pm 6th March 2017
    Shelby Price
    Reply
    Author

    Hey Maurice,
    Looks great. Congrats on the new MVP status.

    Just an FYI, your tab order on the “Driver Storage Locations” allows me to tab over into the note section. Your note section is actually editable from within the GUI.

    Onto my actual question, the “Package Path” textbox is greyed out for me. What gives?

    Thanks,
    Shelby

    • Maurice Daly
      Posted at 9:46 pm 6th March 2017
      Maurice Daly
      Reply
      Author

      HI Shelby.

      Thanks for the well wishes on the MVP award. I’m honoured to have managed to achieve it, now the task of holding onto it begins.

      I could lock the controls but then it’s a PS script so you could just edit it 😉. The package paths textbox greys out when you select MDT as the deployment type or download only by design. MDT drivers are imported into the Deployment share and downloads are simply downloaded and extracted.

      Maurice

  • Leave a Reply