MSEndpointMgr

Driver Automation Tool

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 Acer, Dell, Lenovo, HP and Microsoft
  2. Provides Driver Downloads for all five manufacturers
  3. Provides BIOS downloads for Dell and Lenovo only (at present)
  4. Create a BIOS Update Package
  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 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 TechNet 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 using the ConfigMgr driver package option 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
[CmdletBinding(SupportsShouldProcess = $true)]
param
(

[parameter(Mandatory = $false)]

[String]$Password ) Begin { $WinPECheck = Test-Path -Path HKLM:\SYSTEM\ControlSet001\Control\MiniNT $FlashUtility =”Flash64W.exe” $CurrentBiosFile =”Latitude_E5x70_Precision_3510_1.14.4.exe” } Process { Try { if ($WinPECheck -eq $true) { $FlashSwitches = “/b=$CurrentBiosFile /s” if ($Password -gt $null) { $FlashSwitches = $FlashSwitches + ” /p=$Password” } Start-Process $FlashUtility -ArgumentList $FlashSwitches } else { $BIOSSwitches = ” -noreboot -nopause” if ($Password -gt $null) { $BIOSSwitches = $BIOSSwitches + ” /p=$Password” } Start-Process $CurrentBIOSFile -ArgumentList $BIOSSwitches } } Catch [System.Exception] { Write-Warning -Message “Unable to append log entry to DriverPackageDownload.log file. Error message: $($_.Exception.Message)” } }

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 – https://msendpointmgr.com/wp-content/uploads/tools/DriverAutomationToolNotes.txt

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.

(84581)

Maurice Daly

Maurice has been working in the IT industry for the past 20 years and currently working in the role of Senior Cloud Architect with CloudWay. With a focus on OS deployment through SCCM/MDT, group policies, active directory, virtualisation and office 365, Maurice has been a Windows Server MCSE since 2008 and was awarded Enterprise Mobility MVP in March 2017. Most recently his focus has been on automation of deployment tasks, creating and sharing PowerShell scripts and other content to help others streamline their deployment processes.

165 comments

  • Hi Maurice,

    nice tool there. I just have a slight problem with the Import of HP Drivers into MDT.

    In my task sequence there is a step to read the computer model which then corresponds to the folder structure below Out-of-Box Drivers. Unfortunately Devices made by HP get imported below Hewlett-Packard instead of HP and are therefore not found during OSD.

    Is there anything I can do about this? Maybe I’m just missing out.

    • Hi Denis,

      The detection logic within the apply drivers script caters for the HP/Hewlett-Packard difference for SCCM. For MDT however, renaming the packages would resolve the issue.

      Maurice

  • Hi Maurice,

    Looks great, with regards to the HP Driver packages does the modern driver management method eliminate the need to install the drivers that only come in setup.exe format (Hotkey drivers, ISS driver etc) seperatley or do you still have to add these drivers in to run silently after using WMIC filters?

    • Hi Andy,

      The “dirty drivers” as they are known still need to be installed for hotkey support etc. I am going to work on bringing in automatic installation of these though in the MDM solution we have.

      Maurice

  • Hi Maurice
    I just downloaded and began using your DAT version 6.1.3. I can get Microsoft Surface drivers to download and packaged in SCCM but Lenovo fails?

    I don’t think the drivers ever get downloaded as there is nothing in the download path folders and nothing in the package path folders for the Lenovo models I have tried to download.

    DriverAutomationTool.log shows only the following error.

    ======== DRIVER EXTRACT ISSUE DETECTED ========
    ConfigMgr: Issues occurred while reading extracted drivers

    Can some vendor sites, like Lenovo just be offline? or is there something else I may need to get Lenovo drivers setup?

    • Hi Thomas,

      Can you confirm which model and OS you selected along with the server version on which you are running the tool?.

      Maurice

  • Hello Maurice,
    Lenovo Drivers download seems to not work in the newest version 6.1.3. (BIOS download works) Any idea how to fix it ?

    It seems to find too many versions in one shot and gets confused.

    Info: Querying site code From sccm DriverAutomationTool 05-11-2018 16:19:54 11696 (0x2DB0)
    Info: Site Code Found: XXX DriverAutomationTool 05-11-2018 16:19:54 11696 (0x2DB0)
    Info: Loading ConfigMgr PowerShell module DriverAutomationTool 05-11-2018 16:19:54 11696 (0x2DB0)
    ======== Querying ConfigMgr Distribution Options ======== DriverAutomationTool 05-11-2018 16:19:54 11696 (0x2DB0)
    Info: Adding Distribution Point – SCCM.XXXnosdk.local DriverAutomationTool 05-11-2018 16:19:55 11696 (0x2DB0)
    Info: Found 1 Distribution Points DriverAutomationTool 05-11-2018 16:19:55 11696 (0x2DB0)
    ======== Searching For Model : x280 ======== DriverAutomationTool 05-11-2018 16:20:24 11696 (0x2DB0)
    Model found: ThinkPad X280 DriverAutomationTool 05-11-2018 16:20:24 11696 (0x2DB0)
    ======== Querying Model List(s) ======== DriverAutomationTool 05-11-2018 16:20:55 11696 (0x2DB0)
    Info: Found 32 Lenovo model driver packs for Windows 10 1803 64 bit DriverAutomationTool 05-11-2018 16:20:56 11696 (0x2DB0)
    ======== Searching For Model : x280 ======== DriverAutomationTool 05-11-2018 16:20:59 11696 (0x2DB0)
    Model found: ThinkPad X280 DriverAutomationTool 05-11-2018 16:20:59 11696 (0x2DB0)
    Info: Validating all required selections have been made DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Importing Into Products: ConfigMgr – Driver Pkg DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Download Type: All DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Pre-Check: Download path set To \\sccm\source$\Drivers\DriverAutomation DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    ======== Starting Download Processes ======== DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Models selected: DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Operating System specified: Windows 10 DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Operating System architecture specified: x64 DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Site Code specified: XXX DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Download Path specified: \\sccm\source$\Drivers\DriverAutomation DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Package Path specified: \\sccm\source$\DriverPackages DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    ======== Processing Lenovo ThinkPad X280 Downloads ======== DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Windows 10 build lookup required DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Windows 10 build 10.0.17134.1 and version 1803 identified for driver match DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Starting Download, extract and import processes for Lenovo model: ThinkPad X280 DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Setting Lenovo variables DriverAutomationTool 05-11-2018 16:21:10 11696 (0x2DB0)
    Info: Lenovo ThinkPad X280 matching model type: 20KF DriverAutomationTool 05-11-2018 16:21:11 11696 (0x2DB0)
    Info: Looking Up Lenovo ThinkPad X280 URL For Windows version win10 DriverAutomationTool 05-11-2018 16:21:11 11696 (0x2DB0)
    Info: Searching for Lenovo ThinkPad X280 exe file on https://support.lenovo.com/downloads/ds502329 DriverAutomationTool 05-11-2018 16:21:11 11696 (0x2DB0)
    Info: Passing through Windows version as 10 DriverAutomationTool 05-11-2018 16:21:11 11696 (0x2DB0)
    Info: Passing through Windows architecture as x64 DriverAutomationTool 05-11-2018 16:21:11 11696 (0x2DB0)
    ======== Errors(s) Occurred ======== DriverAutomationTool 05-11-2018 16:21:19 11696 (0x2DB0)
    Error: You cannot call a method on a null-valued expression. DriverAutomationTool 05-11-2018 16:21:19 11696 (0x2DB0)
    DriverAutomationTool 05-11-2018 16:21:19 11696 (0x2DB0)
    Info: Driver package URL – 102 103 104 105 DriverAutomationTool 05-11-2018 16:21:19 11696 (0x2DB0)
    Info: Using SCCM console BIOS package folder – XXX:\Package\BIOS Packages\Lenovo DriverAutomationTool 05-11-2018 16:21:25 11696 (0x2DB0)
    Info: Using SCCM console Driver package folder – XXX:\Package\Driver Packages\Lenovo DriverAutomationTool 05-11-2018 16:21:25 11696 (0x2DB0)
    ======== ThinkPad X280 BIOS PROCESSING STARTED ======== DriverAutomationTool 05-11-2018 16:21:25 11696 (0x2DB0)
    Info: Retrieving BIOS download URL for Lenovo Client Model: ThinkPad X280 DriverAutomationTool 05-11-2018 16:21:25 11696 (0x2DB0)
    Info: Attempting to find download URL using LenovoBiosFinder function DriverAutomationTool 05-11-2018 16:21:25 11696 (0x2DB0)
    Lenovo Base – https://download.lenovo.com/catalog/, Lenovo Model Type 20KF DriverAutomationTool 05-11-2018 16:21:26 11696 (0x2DB0)
    Info: Quering XML https://download.lenovo.com/catalog/20KF_Win10.xml for BIOS download links DriverAutomationTool 05-11-2018 16:21:26 11696 (0x2DB0)
    Info: Downloading BIOS update from https://download.lenovo.com/pccbbs/mobiles/n20uj11w_2_.xml DriverAutomationTool 05-11-2018 16:21:26 11696 (0x2DB0)
    Info: Found exe file link: n20uj11w.exe DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: BIOS version is 1.22.1.07 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: Checking ConfigMgr for existing BIOS release – 1.22.1.07 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: Comparing BIOS versions DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: BIOS package already exists for Lenovo ThinkPad X280 (Version 1.22.1.07). DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: Current BIOS package already exists – XXX00058 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ======== ThinkPad X280 BIOS PROCESSING FINISHED ======== DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: Driver extract location set – \\sccm\source$\Drivers\DriverAutomation\Lenovo\ThinkPad X280\Windows10-1803-x64-102 103 104 105 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    Info: Driver package location set – \\sccm\source$\DriverPackages\Lenovo\ThinkPad X280\Windows10-1803-x64-102 103 104 105 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ======== ConfigMgr ThinkPad X280 DRIVER PROCESSING STARTED ======== DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ConfigMgr: Retrieving driver pack site For Lenovo ThinkPad X280 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ConfigMgr: URL found: https://support.lenovo.com/downloads/ds502329 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ConfigMgr: Latest driver revision found – 102 103 104 105 DriverAutomationTool 05-11-2018 16:21:28 11696 (0x2DB0)
    ConfigMgr: New driver package detected – Processing DriverAutomationTool 05-11-2018 16:21:29 11696 (0x2DB0)
    ConfigMgr: Creating ThinkPad X280 download folder DriverAutomationTool 05-11-2018 16:21:29 11696 (0x2DB0)
    ConfigMgr: Downloading 102 103 104 105 driver cab file DriverAutomationTool 05-11-2018 16:21:29 11696 (0x2DB0)
    ConfigMgr: Downloading from URL: 102 103 104 105 DriverAutomationTool 05-11-2018 16:21:29 11696 (0x2DB0)
    BitsTransfer: Checking BITS background job DriverAutomationTool 05-11-2018 16:21:30 11696 (0x2DB0)

    ConfigMgr: Downloaded file byte size: 0 DriverAutomationTool 05-11-2018 16:21:31 11696 (0x2DB0)
    ConfigMgr: Driver revision: 102 103 104 105 DriverAutomationTool 05-11-2018 16:21:31 11696 (0x2DB0)
    ConfigMgr: 102 103 104 105 File download failed DriverAutomationTool 05-11-2018 16:21:31 11696 (0x2DB0)
    ======== ConfigMgr ThinkPad X280 DRIVER PROCESSING FINISHED ======== DriverAutomationTool 05-11-2018 16:21:31 11696 (0x2DB0)

      • Hi Maurice,

        Thanks a lot for the answer, that was indeed the fix 🙂 Net Framework object components for Internet Explorer were missing. Maybe you should mention this package on the Installation page 😉 As I did not see that anywhere.

        The driver automation tools is just fantastic :)) thanks a lot for creating and keeping it up-to-date :))

        Kind reagards Christian

    • Hi Joonas

      Depending on the product life cycle it is up to the manufacturer to guage support in their XML feed. However you can always create a custom package using the tool for consistency with support in our modern driver management solution.

      The only thing it won’t do of course is download the driver cab for you.

      Maurice

    • Hi Rich,

      I did reach out to Viglen/XDA before about this and published an old version ages ago with support. Given they don’t provide an XML feed, I opted not to continue as web scraping can be unreliable. In their case creating custom driver packages would be an option.

      Maurice

  • Hi Maurice

    I have instaleld the SCConfig Manager and successfully downloaded the Dell Driver into SCCM as Packages.

    After installing the ConfigMgr Webservices and trying to connect to ConfigMgr Webservices Via the MDM/MBD Diags Tab on the Driver Automation Tool, iam constantly getting Status Code 403 and error saying
    An error occured while calling ConfiMgr WebService for a list of available packages. Error Message: You cannot call a method on a null-valued expression.
    Please advice

    • Hi Anand,

      Have you tried manually running the query on the web service site to ensure the required DLL’s are present and service account has rights to read from Configuration Manager?.

      Maurice

  • Any reason why an HP model would show up using SofPaq but not this tool? ProDesk 400 G1 SFF

  • Would it be possible to use this tool to obtain server hardware drivers/firmware too? We mainly deploy to lenovo server hardware and this seems like a great tool to use.

  • Under the Dell model selection, is the list populating correctly? I see that the Latitude E7450 is missing in this release.

  • Maurice, great stuff!

    If I may, one feature request I’d like to make is the ability to specify a CM folder path at runtime where to move the newly created BIOS packages. New-CMPackage doesn’t appear to have a CM Package Destination Folder parameter so everything gets dumped in the root of Packages, but Move-CMObject should work once the package exists.

    Right after line 10646 in DriverAutomationTool.ps1, just after the Get-CMPackage, you could then call a Move-CMObject -InputObject $SCCMPackage -FolderPath $SiteCode:\Packages\$DestFolder

    • HI Michael,

      The package path and repository paths are being changed/renamed in the upcoming version 6.0 of the tool. It should make more sense and this is something that others have also requested. I should hopefully have the update out within the next two weeks.

      Maurice

      • Sounds great, thanks so much for your ongoing contribution in this space and allowing the community to use these great tools.

  • In the instructions on the Modern Driver Management page, you recommend importing the drivers into a Standard Package, as opposed to a Driver Package, and then using a custom script Invoke-CMApplyDriverPackage.ps1 to install the drivers. I can see where this would be useful installing drivers on machines in the field, but is there any advantage to using this method to install drivers during OSD? (vs using Driver packages and the Auto Apply Drivers task sequence step)

    • Hi Steve,

      Essentially the underlying process of injecting the drivers is very similar in both methods. Where we differentiate from using driver packages is for several reasons, that are not really to do with OSD as such, but avoid adding the driver information to the SQL DB, the lengthy import process, avoiding the knock on performance impact on the console associated with doing so, and avoiding the total chaos method if people selecting to apply compatible drivers which could be from multiple models. During the detection process used by the Invoke-CMApplyDriverPackage script, only the latest driver package for that model is matched every time, so the results are always going to be consistent with how the manufacturer has delivered the drivers for that model.

      Maurice

      • Thanks for the explanation. You make some interesting points. Combine that with the fact that the same script and packages can be used both to install drivers during OSD and to update drivers on existing systems already deployed in the field definitely makes it interesting.

        I imagine it would even be possible to build a single small task sequence which calls this script and can be either deployed directly to computer collections to update drivers, or called from within an OSD task sequence to install the drivers during imaging. There would need to be some logic to detect which scenario it’s running in… Could that logic be built into the script, eliminating the need for the DeploymentType parameter? Or would it be better to build the logic into the TS and call the script with the appropriate parameter for each case?

      • Hi Steve,

        The reason we added in the switches was for future features to be added and to allow for greater control during the TS, although I will take your points onboard.

        Maurice

  • Hi Maurice,

    I’m clicking on “Connect to ConfigMGR” and getting the error below, am i doing something stupid????

    Error: cannot bind argument to parameter “path” because it is null.

    Looks a great tool by the way 🙂

    Thanks

    • Hi Greg,

      Have you specified your site server in the site server field?.

      Maurice

      • Yes, I have indeed Maurice

        Get the below error within Powershell

        Import-Module : The drive root is not valid. For the drive root, enter the site server FQDN (for example: Server1.contoso.com) and try again.
        At \\vpsccm1-prod\C$\temp\DriverAutomationTool\DriverAutomationTool.ps1:9087 char:6
        + Import-Module $ModuleName
        + ~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidArgument: (:) [Import-Module], ArgumentException
        + FullyQualifiedErrorId : Arguments,Microsoft.PowerShell.Commands.ImportModuleCommand

        The FQDN of the site server is picked up, but when i click “Connect to ConfigMGR” im getting the above below

        And this error from the driver automation tool

        Error: this command cannot be run from the current drive. To run this command you must first connect to a configuration manager drive.

        Am I just being stupid and missing something obvious?

        Thanks

      • Hi Greg,

        Do you have the ConfigMgr console and PS modules installed on the machine you are using?.

        Maurice

  • Hi Maurice,

    looks like there is an issue with downloading files for HP models.
    Tested with or without proxy and several models. Downloading the file which is retrieved by your tool via browser works fine. Any ideas?

    Bodo

    Example:
    Info: Validating all required selections have been made DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Importing Into Products: Download Only DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Download Type: Drivers DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Pre-Check: Respository path set To C:\TEMP\REP DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    ======== Starting Download Processes ======== DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Models selected: HP EliteDesk 800 G3 Small Form Factor PC DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Operating System specified: Windows 10 DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Operating System architecture specified: x64 DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Site Code specified: PR1 DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Respository Path specified: C:\TEMP\REP DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Package Path specified: DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    ======== Processing HP EliteDesk 800 G3 Small Form Factor PC Downloads ======== DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Windows 10 build lookup required DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Windows 10 build 10.0.15063.0 identified for driver match DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Starting Download,Extract And Import Processes For HP Model: EliteDesk 800 G3 Small Form Factor PC DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Setting HP variables DriverAutomationTool 1/11/2018 10:00:45 AM 14744 (0x3998)
    Info: Driver extract location set – C:\TEMP\REP\HP\EliteDesk 800 G3 Small Form Factor PC\Windows10-10.0.15063.0-x64-10.0 A 1 DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Info: Driver package location set – EliteDesk 800 G3 Small Form Factor PC\Windows10-10.0.15063.0-x64-10.0 A 1 DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    ======== Download Only EliteDesk 800 G3 Small Form Factor PC DRIVER PROCESSING STARTED ======== DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Retrieving ConfigMgr driver pack site For HP EliteDesk 800 G3 Small Form Factor PC DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: URL found: https://ftp.hp.com/pub/softpaq/sp83501-84000/sp83808.exe DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Latest driver revision found – 10.0 A 1 DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Latest driver package revision – DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Creating EliteDesk 800 G3 Small Form Factor PC download folder DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Downloading sp83808.exe driver cab file DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Downloading from URL: https://ftp.hp.com/pub/softpaq/sp83501-84000/sp83808.exe DriverAutomationTool 1/11/2018 10:00:46 AM 14744 (0x3998)
    Download Only: Driver revision: 10.0 A 1 DriverAutomationTool 1/11/2018 10:00:52 AM 14744 (0x3998)
    Download Only: sp83808.exe File download failed DriverAutomationTool 1/11/2018 10:00:52 AM 14744 (0x3998)
    ======== Download Only EliteDesk 800 G3 Small Form Factor PC DRIVER PROCESSING FINISHED ======== DriverAutomationTool 1/11/2018 10:00:52 AM 14744 (0x3998)
    Info: Remaining models to process: 0 DriverAutomationTool 1/11/2018 10:00:52 AM 14744 (0x3998)
    ======== FINISHED PROCESSING ======== DriverAutomationTool 1/11/2018 10:00:52 AM 14744 (0x3998)

    • Hi Bodo,

      There will be an update to the Driver Automation Tool posted later today that solves some issues with HP BIOS downloads and matching in MBM scenario’s also. I am also aware that some HP BIOS downloads are pulling back a 404 not found issue as of yesterday, I have flagged this with my contact in HP and I am waiting on a response.

      Maurice

  • I am having a problem where the tool is saying it completes successfully but the only file is the flashw64.exe. There is no BIOS file although it claims it has downloaded the Latitude 7480 .exe and the one it says it downloads is not the current BIOS. Did I miss something?

    ======== Latitude 7480 BIOS PROCESSING STARTED ======== 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Found BIOS URL 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Latest available BIOS version is 1.6.5 1.7.3 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: New BIOS download available 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: BIOS Download URL Found: https://downloads.dell.com/FOLDER04581889M/1/Latitude_7x80_1.6.5.exe FOLDER04651314M/1/Latitude_7x80_1.7.3.exe 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Downloading Latitude_7x80_1.6.5.exe Latitude_7x80_1.7.3.exe BIOS update file 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Copying Dell Flash64Bit EXE To \\ITGC2W000208.VFCORP.VFC.COM\SOURCE$\OSD\DRIVERS_TMP\Dell\Latitude 7480\BIOS\1-6-5 1-7-3\ 1/1/1601 12:00:00 AM 0 (0x0000)
    ======== Latitude 7480 BIOS PROCESSING FINISHED ======== 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Updating existing BIOS package descriptions for deployment purposes 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Remaining models to process: 0 1/1/1601 12:00:00 AM 0 (0x0000)
    ======== Clean Up Driver Option Processing ======== 1/1/1601 12:00:00 AM 0 (0x0000)
    ConfigMgr: Removing downloaded driver files from \\ITGC2W000208.VFCORP.VFC.COM\SOURCE$\OSD\DRIVERS_TMP. Extracted drivers will remain 1/1/1601 12:00:00 AM 0 (0x0000)
    ======== Finished Processing ======== 1/1/1601 12:00:00 AM 0 (0x0000)

    • Hi Marc,

      If you download version 5.1.3 I have put a fix in for that.

      Maurice

  • Is there a switch / option to only download the cab files w/o auto-extraction?

    Thank you,

    Tyler

    • Hi Tyler,

      At present no, but if you guys would benefit from this I can add the option in.

      Maurice

  • Great Tool Maurice! Don’t have to tell you , you are them man. I finally got it to work, and it solved all my Lenovo issues! Say, when downloading those EXEs i have to click on the Okay button to make sure it expands the files, then your script continues marvelously. Have you been able to address that need? It would allow me to walk away while the process carries on if so. This only happens with those Lenovo EXEs. Thanks in advanced.

    • Thanks :D. I have been made aware of the Lenovo exe’s presenting a security warning. A fix is coming along for the next build.

      Maurice

  • Hi Mike,

    Great tool. Is it possible to have Alienware 15R2, 15R3 & 17R4 models added the supported model list?

    Thanks,
    Martin.

    • Hi Martin,

      Unfortunately as Alienware is seen as a consumer brand, Dell do not publish SCCM driver packages for those models. If you are looking to use these downloads through our MDM process, the only alternative is to create a custom driver package based on extracted drivers.

      Maurice

      • Hi Maurice,
        I expected as much, but thanks for responding. I have an additional question about maintaining the versions of drivers. Am i correct in believing the cab file files the vendors provide are not updated as frequently as the individual drivers. If this is the case would you recommend creating a custom package with the latest individual drivers. I only ask as I have experienced a lot of BSOD’s and some of them have been attributed to older drivers.

        Thanks, Martin.

      • Hi Martin,

        It really depends on the model and its life cycle stage. If the model is new then they tend to keep the driver packages as up to date as possible, having said that though there will be times when individual drivers are released separate to their package refresh times. So to answer the question, if you want to keep the most up to date driver packages possible go with the custom package. Note that you could simply replace driver folders within the manufacturer package as an alternative also, i.e remove the video folder and replace it with your own, then re-distribute.

        Maurice

  • I have noticed that the ‘drivers’ will get relocated when building them with the tool but BIOS downloads stay in the ‘repository/download’ location. It would be GREAT if we could tell the program where to put the BIOS files like we can with the drivers. Even having them in the same location as the drivers would be good as well.

    I use a network share for storing all the data but would the initial download increase performance if we were able to select a local drive or local folder and then relocate everything to the network?

    Thanks for this great tool!!

  • Perfect! Awesome!
    I’ve tested it with the Drivers of Lenovo T460 and all is working fine without any troubles.
    Thanks a lot for all your effort on this tool and making public…
    Questions:
    – It seems that not all drivers (from this model) are current.
    On the official driver download page, there are a lot drivers with a newer date/version. may there
    is another XML Download Files available…?
    – There are a few of “not used” and duplicated drivers (NVIDIA, Integrated Camera etc)… simply
    delete them..?

    • Hi Mike,

      Good to hear the tool is helping you out!.

      The driver packages are the responsibility of the vendor to keep up to date and you will find that as each new product comes out, support for older models like the T460 will begin to decline. This is why I have added in the ability to create custom packages in the latest version, of course there is nothing to stop you simply replacing the old drivers within the package source and re-distributing. As for duplicate drivers, personally I would just enable data dedupe on the distribution points to let it take care of any duplication issues but its a personal choice.

      Maurice

  • Not all HP models listed in Available models under windows 10….

    For example:
    Probook 6550b, Probook 650 G1, Elitebook 8560p, Elitebook 8570p

  • Awesome! Great piece of software!
    After struggling with Lenovos own tool this one comes in handy… 😉

    Just one thing I couldn’t figure out:
    Is there a way to create the packages/import drivers in SCCM underneath a (configurable) folder?

    Right now, standard packages are created directly underneath Application Management\Packages, Drivers are imported directly underneath Operating Systems\Drivers and so on; same for Driver Packages.

    I’d love to see the possibility to have all this stuff in my own folders, e.g. Application Management\Packages\BIOS, …\Packages\Drivers and so on. Same for the drivers, maybe something like \Operating Systems\Drivers\Lenovo\ and so on.

    Am I allowed to move the auto-created Packages/Drivers/Driver Packages to folders created by me? Or will that break functionality?

    Cheers,
    Joerg

  • I am looking into using this tool moving forward but its having a issue with proxy I think. as you can see it finds your URL fine but after that it seems to fail.. Typically we use an autoconfig URL is there a way to still use that with your script?

    ======== PROXY SERVER VALIDATION ======== 1/1/1601 12:00:00 AM 0 (0x0000)
    Proxy: Proxy server set to http://NAPROXY:8100 1/1/1601 12:00:00 AM 0 (0x0000)
    Proxy: Testing authenticated proxy server access to https://msendpointmgr.com/ 1/1/1601 12:00:00 AM 0 (0x0000)
    Proxy: Connected to https://msendpointmgr.com/ successfully 1/1/1601 12:00:00 AM 0 (0x0000)
    Proxy: Global proxy settings set for web/bits transfers 1/1/1601 12:00:00 AM 0 (0x0000)
    ======== Querying Model List(s) ======== 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Downloading Dell Product List 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Downloading Dell Driver Pack Cabinet File from https://downloads.dell.com/catalog/DriverPackCatalog.cab 1/1/1601 12:00:00 AM 0 (0x0000)
    Error: Cannot bind parameter ‘ProxyList’. Cannot convert the “System.Net.WebProxy” value of type “System.Net.WebProxy” to type “System.Uri”. 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Reading Driver Pack XML File – C:\Temp\DriverAutomationTool\Temp\DriverPackCatalog.xml 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: Found: 83 Known Dell Models 1/1/1601 12:00:00 AM 0 (0x0000)
    Info: No Dell Models Found. If you are using a proxy server please specify the proxy in the Proxy Server Settings tab 1/1/1601 12:00:00 AM 0 (0x0000)

    • It looks like the proxy was specified twice in the above. You could try specifying the proxy manually in the code. Search for this line:

      ProxyList = $global:ProxyServer

      Then change the $global:ProxyServer to https://naproxy:8100/ and re-run the script.

      Maurice

      • Twice, interesting but I will certainly try that and let you know, thanks,

      • I was able to download 2 Lenovo drivers before it failed again.

        Also some Dell products just will not download via the tool. The URL I see in the log is valid and I can manually pull it down but the tool simply will not.

        ######Start log file of dell fail and Lenovo Proxy errors######

  • Thanks for the great tool,
    However for some reason it doesn’t seem to honor any proxy setting i put in,
    I work in multiple schools with SCCM servers and they all require a proxy server to connect to the internet,

    I have inputed the same proxy the computer and SCCM use and it will retrive models etc fine, but when it gets to downloading them it just sits on Establishing connection,

    If i manually go to the link in a broswer it will download without issues.

    Any ideas?

    • Hi Greg,

      I am working on a major update to the proxy handling in the new release due next week. Unfortunately I can’t account for every eventuality in terms of filtering preventing the downloads but I am going to provide as much feedback in the console as possible.

      Maurice

  • Hello Maurice,
    Fantastic tool! Easy to use!
    I have downloaded 4.1.3 and I’ve started downloading BIOS updates for Lenovos T series but when I check Package folders they are empty.
    I also noticed that Packages do not have any programs configured.

    Is that as-intended or a bug?

    Also, am I correct that when updating BIOS the Package must a program with the correct parameters and files in Package location?

    Thanks, and best regards, Anders

  • I’m using the latest version 4.1.0 and when I am selecting “ConfigMgr – Driver Pkg” I’m getting an error “Errors Occurred while creating driver package”. I’m able to create a standard package without issue. I was able to do this prior with an older version as I’m going to test again. This is for any Dell model I select for Windows 10. Doesn’t appear to be a permissions issue as procmon is not showing me any errors. Will continue to dig through logs but if you have any insight let me know.

    Log Snippit:
    ==================== ConfigMgr DRIVER IMPORT ====================
    ConfigMgr: Checking Driver Package Created Successfully
    Error: Errors Occurred While Creating Driver Package
    ======== ConfigMgr OptiPlex 5050 DRIVER PROCESSING FINISHED ========

    Thanks,

    • Did figure something out Chad? I seem to have same problem now on one of my enviroments.

  • Installed the latest release… Getting download errors when trying to sync drivers for Dell and Lenovo. No proxy. The bios update download succeeded for Dell.

    ConfigMgr: Downloading from URL: https://downloads.dell.com/FOLDER04376324M/1/7040-Win10-A09-693DT.CAB FOLDER03763454M/1/7040-win8.1-A03-J2JHK.CAB FOLDER04376232M/1/7040-win7-A07-9WYCT.CAB

    ConfigMgr: Driver Revision: A07

    ConfigMgr: 7040-win7-A07-9WYCT.CAB File Download Failed

    • Hi Michael,

      I think this is a Dell issue as such. I too an experiencing issues downloading the cab, even manually.

      Maurice

    • Hi Steve,

      If you are talking about the exe, I had originally removed this for a purpose however I have just recompiled it and included it in the zip if you re-download it.

      Maurice

  • Hi,
    I’m getting an error when attempting to use the webservice, and I can’t figure out why.
    Here’s what I’m doing:

    $secretKey = “123-abc”
    $URI = “https://mysccmserver.domain.corp/ConfigMgrWebService/ConfigMgr.asmx”
    $Web = New-WebServiceProxy -Uri $URI
    $web.GetCMPackage($secretKey,”Drivers”)

    And this is the error I’m getting:

    Exception calling “GetCMPackage” with “2” argument(s): “Server was unable to process request. —> The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.”
    At line:1 char:1
    + $web.GetCMPackage($SecretKey,”Drivers”)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SoapException

    The IIS pool is running under a AD user that has the read only analyst role in sccm.
    The AD account does not have any special permissions in the AD, as I only want this account to read data from the sccm.

    I tried setting the account as full administrator on sccm, as well as local administrator on the sccm server. Still the same error.

    I installed ConfigMgr WebServices 1.3 and had no webservices installed before that.

    Thankful for any assistance I might get, thank you 🙂

  • Is there any chance of being able to add Lenovo X260 32 bit drivers?

    Great tool, But we can only use it partially due to missing drivers 🙂

    Thanks

    • Hi Ian,

      The models are retrieved from an XML delivered by Lenovo so unfortunately I do not have control over this. I presume you are talking about Windows 7 32 bit drivers in this instance as the X260 is listed in the tool for Windows 10.

      Maurice

  • Awesome tool. Just implemented in my dev environment. Just pick the models you want to deploy and then walk away.

  • hi,

    m getting below error when i launch script.

    File D:\DriverDownloadTool\DriverDownloadTool.ps1 cannot be loaded. The file D:\DriverDownloadTool\DriverDownloadTool.p
    s1 is not digitally signed. The script will not execute on the system. Please see “get-help about_signing” for more det
    ails..
    At line:1 char:25
    + .\DriverDownloadTool.ps1 <<<<
    + CategoryInfo : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

    can you please help?

    • Hi Sandeep,

      As the script is not digitally signed, you will need to either alter your execution policies or launch the script inside a PS session with the policies bypassed i.e. PowerShell.exe -executionpolicy bypass.

      Maurice

  • I think I figured it out. Looks like if you have the Folders in MDT already created the way the script does them, the script will only create the missing folders but will not import the actual drivers. For example if you have already created a folder named Out-of-Box Drivers\Windows 10 x64. The script malfunctions. When I deleted this folder and reran the script, everything worked great. Looks like the script may need to be tweaked to check for those folders and continue with importing…?

    • Hi Carl,

      I think something else is going on there. The script does check for the presence of the folder structure when importing. I have just purged my MDT environment and created the Windows 10 x64 folder to confirm, the import job completed without any issue.

      Maurice

  • Hi Maurice,

    I haven’t yet tried manual import with PS. I am testing against Dell Optiplex 9020.

  • When I try to run this script for just MDT it will download the cab file and create the entry into the MDT share, but does not import the drivers. Any idea why this happens?

    • Hi Carl,

      Have you tried manually importing the drivers in PowerShell to test for any errors?. Could you let me know the make/model you are using also so I can try to replicate this.

      Maurice

  • I found a problem with dirvers for Dell Precision 7510 (name retrived from sccm) As dell aparently calls it Dell Precision Mobile Workstation 7510. I don’t know if this is a problem with sccm, dell or the script.

    Other then that it’s a great tool. Keep the good work up!

    • Hi Mathias,

      When you say you found a problem, are you having issues with the download etc?. The model names come directly from the Dell XML.

      Maurice

  • FYI Running without a proxy on a direct connection was failing when checking Lenovo models. Noticed the following error output:

    Invoke-WebRequest : The response content cannot be parsed because the Internet Explorer engine is not available, or
    Internet Explorer’s first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again.
    At C:\MDT\DriverDownloadTool.ps1:8225 char:37
    + … [xml]$global:LenovoModelXML = Invoke-WebRequest -Uri $LenovoXMLSource
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotImplemented: (:) [Invoke-WebRequest], NotSupportedException
    + FullyQualifiedErrorId : WebCmdletIEDomNotSupportedException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

    Turns out it just needed the UseBasicParsing parameter substituted in the script (as seen in the global variables section) per the error outpu. Went ahead and changed eight Invoke-WebRequest blocks to read as:
    LenovoModelXML = Invoke-WebRequest -Uri $LenovoXMLSource -UseBasicParsing

    All is well with the world. Hope that saves someone the research that it took on my end. Uploaded a corrected Gist at the website URL listed 🙂

    Thanks for your hard work Maurice!

  • Hi there – great tool! I have run it in SCCM / BIOS only mode, and while it creates the BIOS exe’s in folders, I don’t see any powershell scripts created. Is this normal?

    • Previously the script was creating a PowerShell script in each of the bios package folders. In the latest release with modern bios management this is replaced by a script that works to download and dynamically identify the bios update.

      If you read the section on Modern Bios Management you will see the update to this process.

      I hope that helps.

      Maurice

  • EDIT: I found where the package was created! It was created under “Application Management” -> “Packages”

    Shouldn’t it be in “Operating Systems” -> “Driver Packages”?

    • Hi Pedro

      If you went with the default option that is a “standard package” then this is expected behavior. The drivers are packaged as a standard package for use with our MDM (modern driver management) post. You do have the option of picking Driver Package if you wish.

      Maurice

      • Hi Maurice.

        Thank you so much for the fast reply.
        I wasn’t totally sure of the difference between choosing standard package and driver package but now it makes all the sense.
        As a best practice, do you recommend choosing one of them? I see that I can still pick the standard driver package from a Task sequence but for an organization point of view I guess I should probably create the packages in the driver packages, instead of mixing application packages with driver packages…

        cheers,
        pedro

      • Hi Pedro

        My personal preference is to package the drivers into standard program packages. This is for a number of reasons including reduced overhead in the ConfigMgr database, faster “import” and data dedupe considerations.

        Our Modern Driver Management process works on the basis of the drivers being contained within standard packages.

        Maurice

  • Congrats on this amazing tool. Unfortunately I am experiencing an unusual behavior running it to get Lenovo drivers.
    Everything seems to have run successfully, the folders are created and the drivers/packages downloaded but nothing is created on the SCCM side, although the logs show that the packages were created:

    SCCM Logs:
    “User “mydomain\user” created a package named “Lenovo Drivers – Lenovo L460 – Windows 10 x64 (20FV) 201705 ” (PT10004C).”

    Script Logs:

    Any ideas?

    Thanks in advance!

  • I tried to create a package for the HP EliteDesk 800 G1 Desktop Mini PC but get an issue extracting the drivers. The file sp69540.exe is downloaded to a subfolder “Driver Cab”. Then the logs shows these two lines:
    ConfigMgr: Driver CAB Destination Directory: D:\TEMP\HP\EliteDesk 800 G1 Desktop Mini PC\Windows7-x64-1.01 A 3
    ConfigMgr: Extracting HP Drivers to D:\Temp\EliteDesk 800 G1 Desktop Mini PC\Win7x64

    That doesn’t seem right…

    • Ahh, I get it. The extraction is being done in another location but fails… Selecting the EliteBook 820 G1 Notebook PC works fine but the EliteDesk 800 G1 Base Model Small Form Factor PC also fails to extract 🙁 There is a difference between the CAB files. Some have a licence agreement selection and others have not.

      • Hi Jeroen,

        I’ll raise this one with HP. There were issues with some of the driver packages not following the silent extract paths and process, it is being corrected on a case by case basis at this stage.

        Maurice

      • Ah ok. For now I have altered the script so that it uses the Acer method (7zip) to extract the content and so far it has worked for all models I selected. Thanks!

  • Will you guys be adding the new Dell Latitude 5480 to the list of drivers?

    Thanks

      • Hi Bruce,

        The model list and subsequent supported operating systems are fed through in an XML from Dell, so I have no direct control over the listings. Dell ship updates to the XML on the second Tuesday of the month (https://en.community.dell.com/techcenter/enterprise-client/w/wiki/3588.driver-pack-release-schedule) so it might be a case that the link will appear in the next release. At present manually interrogating the XML only results in the following;

        PS C:\WINDOWS\system32> $DellModelCabFiles | Where-object {$_.SupportedSystems.Brand.Model.Name -match “5480”}

        format : cab
        hashMD5 : 62D4F75E24D551CF60291516308F202E
        size : 450560492
        dateTime : 2017-05-22T10:20:28
        vendorVersion : 1.0
        dellVersion : A02
        path : FOLDER04317422M/1/5480-WIN10-A02-KTGYX.CAB
        releaseID : KTGYX
        delta : /techcenter/enterprise-client/w/wiki/12225.latitude-5480-windows-10-driver-pack
        type : win
        Name : Name
        Description : Description
        SupportedOperatingSystems : SupportedOperatingSystems
        SupportedSystems : SupportedSystems
        ImportantInfo : ImportantInfo

      • Thanks a lot for the quick response Maurice. You have now SPOILED the entire SCCM Admin community 😉 ..I guess I will have to do the win7 drivers manually.

        -Bruce

  • First off, great tool! Quick question, when I try to bring up the manufacturer model list, I can pull in HP models but the script can’t find the list for the other manufacturers. Is there something different about the HP model request? Just wonder for troubleshooting purposes. Thanks!

    • Hi Yuri

      If you are selecting the Windows 10 1703 or 1607 as the OS, HP is the only manufacturer currently using this method. If you select Windows 10 or previous OSes you should be able to select the other manufacturers.

      Maurice

  • How often is the driver XML updated? I need the drivers for Lenovo T470s, P51s, Yoga 370, X270. Thank you, this tool is a great time saver!

    • Thanks Derek.

      The XML sources from Dell, HP and Lenovo are updated by the manufacturers so times vary. The Acer downloads are taken from a web scrape so they are real time and the Microsoft downloads are manually updated at the moment.

      Maurice

  • Additional – I can download HP’s models if I run it from my site server. I cannot download them if I’m running on a Windows 10 Desktop

    • Is there any difference in your internet access policies between the two?. There is no reason why it wouldn’t run under a Windows 10 environment, so I am wondering if you have a proxy or filtering software installed on the Win 10 client?.

      • There is not. Both are exempted from filtering. I’ve tried this at a client’s site server as well. Different content filter, but the same result. With regards to the MS information, we can download the file in a browser using DownloadLinks.xml, but if it changes to downloadlinks.xml, it fails. I’ve seen this on Windows 10, Server 2012 R2 and Server 2016.

        Happy to assist with testing at your convenience.

      • Can you please mail me over the log ([email protected]) so I can see what is happening?. The script has been tested in Windows 10, 2012R2 and 2016 with no issues.

  • Still loving this tool, but am having an issue with downloading the device lists. I’m able to d/l Dell’s list, but none of the others. I was able to pull all but Microsoft a few weeks ago.

    I did a bit of troubleshooting for the MS issue. I’m able to see the XML in Chrome with capitol letters in the XML’s file name. I cannot see the file with lower case letters. I can’t see the files contents in IE at all. Could I be having an XML format issue or a filename issue?

  • Thanks Maurice,

    The Download for Dell Optiplex 3040 is working well, (SCCM Standard pkg – Drivers – Win7x64)
    But the link for the Dell Latitude 14 Rugged (5404) seems broken (SCCM Standard pkg – Drivers – Win7x64)

  • Nice tool, I really want to use it but I receive always the same error when the script tries to import the drivers.

    New-Item : Object reference not set to an instance of an object.
    At D:\sccm_dml\tools\Driver Automation Tool\DriverDownloadTool.ps1:996 char:12
    + … New-Item -ItemType Directory -Path $DriverPackageDest
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [New-Item], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.NewItemCommand

    • Do you have the required share/security permissions to create folders on the share specified in the package path specified?

      • Yes I have. The strange thing is, the driver packages are created and do contain the drivers. With a previous version of your tool I received the same error but the driver packages were empty.

      • Hi Jasper,

        It was due to the spaces used in the UNC paths specified, as per the instructions the intention was for only a \\SERVER\SHARE path to be used. I have just updated the script to allow for these.

        Maurice

  • Hi. Ran into an issue with a few of the Dell models we use. It looks like it’s trying to download the CAB file, but never does. There is no error in the GUI, but it never downloads, extracts, and imports the drivers. Effected models are the Optiplex 9010, Optiplex 3020, and Optiplex 9020. Also, the status bar was stuck at 20% after it was finished running.

    • I have found the issue, it applies to models with multiple sub-models, such as 9020, 9020M, 9020 AIO etc. I have just removed a wildcard on this line –

      $DriverDownload = $DellDownloadBase + “/” + ($DellModelCabFiles | Where-Object { ((($_.SupportedOperatingSystems).OperatingSystem).osCode -like “*$WindowsVersion*”) -and ($_.SupportedSystems.Brand.Model.Name -like “*$Model“) }).path

      This should resolve your issue. I have also updated the script if you need to download it again.

      Maurice

  • Well Liked Process and Brain saver allowing more Coffee time, we have a total of 13 Dell models across 3 OS platforms using x86 and x64 on each this is going to same me whole bunch of time every quarter when we run updates against hardware.

  • Hi Maurice

    for Lenovo models it only picks up the latest model and not the older can this be included like with the dell model.

    • Hi Dean,

      The full list of available Lenovo SCCM driver packages / models is obtained from an XML published at their end. I will pass on this feedback though.

      Maurice

  • HI Maurice

    Truly next level tool this, on have one problem when I put in my server name it keeps saying sccm server specified not found – I am an admin on the box and in configMgr

    every thing else works like a charm

    • Hi Dean,

      I presume when you say it wont connect to your server you are running the script remotely?. Can you confirm that PS remoting is enabled, use enable-psremoting -force from a administrative PS shell on your SCCM server if unsure.

      Maurice

  • Hi Maurice,
    Great tool, thanks for making it available to the community!

    I downloaded several Dell driver packs with it, most downloaded and imported with no issue, but on some models (for example E6420, E6430) there are multiple entries listed in the “Manufacturer Selection” tab. This appears to be for different versions, like ATG and XFR, but the tool does not distinguish between these in the list.

    Also, I had 2 models which did not download the driver cabs (E6420, E6430). From the log it seems that the URL is malformed:
    SCCM: Downloading from URL: https://downloads.dell.com/FOLDER03481138M/1/E6430-WIN7-A13-YTNXR.CAB FOLDER03479583M/1/E6430S-WIN7-A11-Y8FD3.CAB

    The E6430s model downloaded to 76%, then seemed to stop, skip the import step and move to the next model in the list:
    SCCM: Downloaded 579584 kB of 771790 kB (75%). Next update in 30 seconds..
    SCCM: Downloaded 585728 kB of 771790 kB (76%). Next update in 30 seconds..
    SCCM: Driver Revision: A11

    Starting Download,Extract And Import Processes For Dell Model: Latitude E6440

    • Hi Trevor,

      The “special” models such as the ATG and XFR need to be worked on in an update as some have specific download pages and some do not. Unfortunately in some cases the model naming convention is not standardized, however I will add in exception rules where required. I am also working to add in another Dell XML feed for BIOS updates not currently listed in the tool and additional package checks, all of which will be in the next build in a couple of days.

      Maurice

  • I am excited about the prospects of this utility. I am testing it in my CM test environment which is running 1606. I am running into some issues and notice a few flaws in the UI of the tool. Would you prefer an email communication vs posting my findings here?

    • Hi Eric

      I’ll look into the points you raised and try to add in improvements and functionality.

      Maurice

  • I am not sure if this is working or not. Example I run the task for a driver package, Dell Optiplex 3050 to be exact, the process runs but gets stuck on a certain “importing Driver INI 46 of 79”, I let this run over night knowing that this process is static and may not look like anything. I had to force quit Powershell but the driver package does show up in ConfigMgr. I am not sure if this is normal or not. Btw thanks for this tool, it will really help a lot.

    • Hi David,

      Please let me know the OS you had selected and I will run through this to see can I replicate the issue.

      Maurice

  • Thanks for providing this tool. However, I am running into an issue when trying to use it. Upon running it from PS ISE (run as Admin) on our SCCM server the window loads but the “Site Code” box is empty and uneditable. Site Server populates just fine. If I click “Connect to SCCM,” I get the error “SCCM Server Specified Not Found” in the Job Process Log and the following in PS ISE:

    Test-WSMan : The WinRM client sent a request to an HTTP server and
    got a response saying the requested HTTP URL was not available. This is usually returned by a HTTP server
    that does not support the WS-Management protocol.
    At C:\DriverDownloader\DriverDownloadTool.ps1:1383 char:8
    + If ((Test-WSMan -ComputerName $SiteServer).wsmid -ne $null)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (OC-SCCM-SRV01:String) [Test-WSMan], InvalidOperationExcepti
    on
    + FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.TestWSManCommand

    Any assistance you could provide would be greatly appreciated.

    • Hi Lam,

      Can you confirm that PS remoting is enabled on the server and a rule for port 5985 is enabled?.

      Maurice

      • We have a physical firewall for the whole campus, so Windows Firewall is disabled. I enabled PS Remoting, no change.

      • So I was able to run it successfully on a different computer. However, upon selecting the Dell checkbox and clicking “Find Models” I get the messages:

        INFO : Found 27 Known Dell Models

        followed by

        INFO: No Dell Models Found. If you are using a proxy…

        Additionally, the following is output in PowerShell:

        Start-BitsTransfer : The operation being requested was not performed because the user has not logged on to the
        network. The specified service does not exist. (Exception from HRESULT: 0x800704DD)
        At C:\Temp\DriverDownloadTool.ps1:2825 char:7
        + … Start-BitsTransfer -Source $DellXMLCabinetSource -Destina …
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : NotSpecified: (:) [Start-BitsTransfer], COMException
        + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.BackgroundIntelligentTransfer.Mana
        gement.NewBitsTransferCommand

        Get-Content : Cannot find path ‘C:\Users\CLAKE-~1\AppData\Local\Temp\DriverPackCatalog.xml’ because it does not exist.
        At C:\Temp\DriverDownloadTool.ps1:2838 char:26
        + … [xml]$DellModelXML = Get-Content -Path $env:TEMP\$DellXMLFile
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : ObjectNotFound: (C:\Users\CLAKE-…PackCatalog.xml:String) [Get-Content], ItemNotFoundEx
        ception
        + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

        You cannot call a method on a null-valued expression.
        At C:\Temp\DriverDownloadTool.ps1:2840 char:5
        + $DellModelXML.GetType().FullName
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

      • I presume you are running the account as a different user on the machine?. If so can you log on interactively on the machine and test the script?.

        In regards to the Dell and HP models not being returned, the XML’s are extracted out of a downloaded CAB file so you might want to check if there are any proxy restrictions on this, the Lenovo XML file is hosted by them.

      • That did it! We use standard credentials to log in with an admin login to run things as needed. Logging in as the admin account allowed everything to work, including reading the XMLs. Thanks for all your help!

  • Most excellent! Thanks so much.

    The Dell Latitude E5520 also tries to d/l the E5520M driver cab. I was able to manually download it and change the name to match the script to install. Looks like a bit of a syntax issue on Dell’s part, but not sure.

    • I’ve made a minor change to the script that should correct this along with some other tweaks. It will be posted in the morning – version 2.7.

  • Hello! First – great tool. I was able to import a number of older Dell Laptops in my SCCM. However, newer laptops, like the Dell Latitude E5540 and E5470 all prompt errors like below when importing. Any help would be appreciated!

    New-Item : Object reference not set to an instance of an object.
    At C:\Users\********Desktop\DriverDownloadTool.ps1:874 char:12
    + New-Item -Type dir -Path $DriverPackageDest
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [New-Item], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.NewItemCommand

    WARNING: Configuration Manager cannot import the specified driver. Verify that the driver exists in the specified
    location and that the SMS Provider computer has Read permissions to the specified shared folder.
    Import-CMDriver : Configuration Manager cannot import the specified driver. Verify that the driver exists in the
    specified location and that the SMS Provider computer has Read permissions to the specified shared folder.
    At C:\Users\*********\Desktop\DriverDownloadTool.ps1:908 char:28
    + $DriverInfo = Import-CMDriver -UncFileLocation
    ($DriverINF.FullName …
    +
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (Microsoft.Confi…rtDriverCommand:ImportDriverCommand) [Import-CMDr
    er], InvalidOperationException
    + FullyQualifiedErrorId : ImportError,Microsoft.ConfigurationManagement.Cmdlets.Osd.Commands.ImportDriverCommand

      • How can I add Lenovo T430 models???

        Excellent tool – I like it.

        Thanks

        RL

      • The Lenovo Model list is generated by Lenovo themselves in the form of an XML. I will pass your feedback for the T430 to be added.

    • The issue has to do with the folder structure of the Dell drivers. If you browse through the imported files you will notice several directories are named with *.inf as the folder name. In the script, the Get-ChildItem command in Line 900 collects all files as well as directories named *.inf.

      When the drivers are attempted to be added, the script attempts to add the directory as a driver package. To solve the problem change line 900 to include the -File filter so only files are included in the list and the directory object themselves are excluded.

      $DriverINFFiles = Get-ChildItem -File -Path “$DriverExtractDest” -Recurse -Filter “*.inf” | Where-Object { $_.FullName -like “*$Architecture*” }

      • Hi Chris,

        I’ve added in the fix to the latest version. Well spotted.

        Maurice

  • Firstly thanks for the great tool.

    Any known issues with the Lenovo side of things? Dell works fine for me but I get this from Lenovo:

    SCCM: Retrieving SCCM Driver Pack Site For Lenovo M700z
    SCCM: URL Found: https://downloads.dell.com/published/Pages/
    SCCM: Creating M700z download folder
    SCCM: Downloading badLink driver cab file
    SCCM: Downloading from URL: badLink
    SCCM: Driver Revision: badLink

    • Hi David,

      I tried downloading the M700z drivers without issue. Perhaps you could email me the full log so I can see what was going on?.

      Maurice

  • Hi Maurice,
    Excellent work on this script!

    One problem though, in my case it downloads the cab-file successfully, it also creates the folder structure successfully both in the driver repository and in MDT, but neither folders contain any files, so something seems to go wrong with the extraction. I tried “HP Slice” model.

    Rgds,

    • It seems to be the same no matter which model I’m trying… But it seems to work with your old “Model”-specific scripts…

      • Hi Victor,

        I have just ran through downloading the “HP Elite Slide” as per your query and it created the folders and package successfully. There was an issue with a large number of HP driver packages not performing a silent extract up to a couple of days ago, so you might clear out any previously download files and directories then try it again as HP have since resolved this issue. If you are still experiencing issues let me know the OS and Architecture you are using and I will attempt to replicate / recreate the issue.

        Maurice

  • 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

  • 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.

    • 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

      • 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:windowssystem32>PowerShell.exe -ExecutionPolicy Bypass -Command “& ‘C:UsersAndrewDownloadsMicrosoftDriverDownloadTool.ps1′”
        You cannot call a method on a null-valued expression.
        At C:UsersAndrewDownloadsMicrosoftDriverDownloadTool.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:UsersAndrewDownloadsMicrosoftDriverDownloadTool.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:UsersAndrewDownloadsMicrosoftDriverDownloadTool.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)

      • 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.

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

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

      • 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: \xxxOSDTESTING$
        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: \xxxOSDTESTING$LenovoX260201601-Windows7-x64
        Download Only: Waiting For Extract Process To Complete.. Next Check In 60 Seconds

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

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

    • 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.

  • Please make possible to import drivers as regural packages, not only “Driver Packages”.

Sponsors