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 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 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. Lenovo URL detection works best on client OSes. Running the tool in a server environment for this can result in badlink for the Lenovo downloads.
  2. 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.
  3. Background jobs and multi threading are not yet in this release.
  4. 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.
  5. 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

Version 3.6

– Added support for Lenovo BIOS downloads. The file is downloaded but not packaged as Lenovo BIOS updates are non uniform in their application
– Fixed issue with downloads selected to “All” attempting BIOS downloads for manufacturers which are not currently supported by the BIOS download process
– Changed clean up process. The script will no longer clean up the EXE/CAB files unless selected in the clean up tab

Version 3.5

-Added check for HP driver extraction due to issues with some softpaqs not obeying the silent extract directory path
Changed network path text boxes to modern folder browse boxes
– MIF revision added

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.

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.

(9422)

comments
  • aimar
    Posted at 16:29 March 1, 2017
    aimar
    Reply
    Author

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

  • Donovan
    Posted at 18:11 March 1, 2017
    Donovan
    Reply
    Author

    badass. just sayin

  • zackj
    Posted at 21:28 March 1, 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 21:32 March 1, 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 March 2, 2017
    Andrew
    Reply
    Author

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

    • Maurice Daly
      Posted at 16:22 March 2, 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 March 3, 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: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)

        • Maurice Daly
          Posted at 10:25 March 3, 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 March 3, 2017
            Andrew
            Author

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

          • Maurice Daly
            Posted at 10:43 March 3, 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 March 3, 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: \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 ========

          • Maurice Daly
            Posted at 10:54 March 3, 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 13:40 March 4, 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 March 6, 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 19:25 March 6, 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

  • Victor
    Posted at 13:51 March 17, 2017
    Victor
    Reply
    Author

    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,

    • Victor
      Posted at 14:26 March 17, 2017
      Victor
      Reply
      Author

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

      • Maurice Daly
        Posted at 12:31 March 20, 2017
        Maurice Daly
        Reply
        Author

        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

  • D
    Posted at 01:41 March 24, 2017
    D
    Reply
    Author

    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: http://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

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

      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

  • BK
    Posted at 16:56 March 26, 2017
    BK
    Reply
    Author

    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

    • Maurice Daly
      Posted at 21:53 March 27, 2017
      Maurice Daly
      Reply
      Author

      I’m looking into this for you.

      • Ram
        Posted at 16:52 March 29, 2017
        Ram
        Reply
        Author

        How can I add Lenovo T430 models???

        Excellent tool – I like it.

        Thanks

        RL

        • Maurice Daly
          Posted at 08:02 April 8, 2017
          Maurice Daly
          Reply
          Author

          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.

    • Chris Lamb
      Posted at 15:54 April 7, 2017
      Chris Lamb
      Reply
      Author

      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*” }

      • Maurice Daly
        Posted at 07:59 April 8, 2017
        Maurice Daly
        Reply
        Author

        Hi Chris,

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

        Maurice

  • BK
    Posted at 22:07 March 28, 2017
    BK
    Reply
    Author

    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.

    • Maurice Daly
      Posted at 14:53 March 29, 2017
      Maurice Daly
      Reply
      Author

      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.

      • BK
        Posted at 19:59 April 4, 2017
        BK
        Reply
        Author

        Excellent! Thanks so much!

  • Lam Cake
    Posted at 15:28 March 30, 2017
    Lam Cake
    Reply
    Author

    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.

    • Maurice Daly
      Posted at 15:32 March 30, 2017
      Maurice Daly
      Reply
      Author

      Hi Lam,

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

      Maurice

      • Lam Cake
        Posted at 15:38 March 30, 2017
        Lam Cake
        Reply
        Author

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

        • Maurice Daly
          Posted at 15:56 March 30, 2017
          Maurice Daly
          Reply
          Author

          Did you use Enable-PSRemoting -Force?

          • Lam Cake
            Posted at 16:15 March 30, 2017
            Lam Cake
            Author

            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

          • Maurice Daly
            Posted at 17:12 March 30, 2017
            Maurice Daly
            Author

            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.

          • Lam Cake
            Posted at 13:50 March 31, 2017
            Lam Cake
            Author

            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!

  • David
    Posted at 21:52 March 30, 2017
    David
    Reply
    Author

    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.

    • Maurice Daly
      Posted at 15:51 March 31, 2017
      Maurice Daly
      Reply
      Author

      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

      • David
        Posted at 15:54 March 31, 2017
        David
        Reply
        Author

        Thanks for the reply, Windows 10 x64

  • Eric Giroux
    Posted at 19:56 March 31, 2017
    Eric Giroux
    Reply
    Author

    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?

    • Maurice Daly
      Posted at 22:34 March 31, 2017
      Maurice Daly
      Reply
      Author

      Hi Eric

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

      Maurice

  • Trevor
    Posted at 10:08 April 5, 2017
    Trevor
    Reply
    Author

    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: http://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

    • Maurice Daly
      Posted at 16:02 April 5, 2017
      Maurice Daly
      Reply
      Author

      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

  • Dean
    Posted at 05:42 April 6, 2017
    Dean
    Reply
    Author

    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

    • Maurice Daly
      Posted at 10:08 April 6, 2017
      Maurice Daly
      Reply
      Author

      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

      • dean
        Posted at 06:07 April 7, 2017
        dean
        Reply
        Author

        Hi Maurice

        Command worked Thanks a mil

  • dean
    Posted at 06:04 April 10, 2017
    dean
    Reply
    Author

    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.

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

      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

  • Adrian Moss
    Posted at 15:49 April 11, 2017
    Adrian Moss
    Reply
    Author

    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.

  • BK
    Posted at 18:35 April 19, 2017
    BK
    Reply
    Author

    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.

    • Maurice Daly
      Posted at 20:34 April 19, 2017
      Maurice Daly
      Reply
      Author

      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

  • Jasper
    Posted at 14:20 April 21, 2017
    Jasper
    Reply
    Author

    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

    • Maurice Daly
      Posted at 14:57 April 21, 2017
      Maurice Daly
      Reply
      Author

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

      • Jasper
        Posted at 12:52 April 28, 2017
        Jasper
        Reply
        Author

        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.

        • Maurice Daly
          Posted at 16:23 April 28, 2017
          Maurice Daly
          Reply
          Author

          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

  • Paul
    Posted at 12:48 May 13, 2017
    Paul
    Reply
    Author

    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)

  • BK
    Posted at 16:44 May 15, 2017
    BK
    Reply
    Author

    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?

  • BK
    Posted at 16:46 May 15, 2017
    BK
    Reply
    Author

    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

    • Maurice Daly
      Posted at 23:11 May 15, 2017
      Maurice Daly
      Reply
      Author

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

      • BK
        Posted at 20:09 May 18, 2017
        BK
        Reply
        Author

        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.

        • Maurice Daly
          Posted at 23:38 May 18, 2017
          Maurice Daly
          Reply
          Author

          Can you please mail me over the log (maurice@scconfigmgr.com) so I can see what is happening?. The script has been tested in Windows 10, 2012R2 and 2016 with no issues.

  • Derek
    Posted at 15:19 May 19, 2017
    Derek
    Reply
    Author

    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!

    • Maurice Daly
      Posted at 16:41 May 19, 2017
      Maurice Daly
      Reply
      Author

      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

  • Yuri
    Posted at 14:58 May 24, 2017
    Yuri
    Reply
    Author

    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!

    • Maurice Daly
      Posted at 15:57 May 24, 2017
      Maurice Daly
      Reply
      Author

      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

      • Yuri
        Posted at 16:38 May 24, 2017
        Yuri
        Reply
        Author

        That did it! Thanks!

  • Bruce
    Posted at 21:08 May 30, 2017
    Bruce
    Reply
    Author

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

    Thanks

    • Bruce
      Posted at 21:33 May 30, 2017
      Bruce
      Reply
      Author
      • Maurice Daly
        Posted at 23:00 May 30, 2017
        Maurice Daly
        Reply
        Author

        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 (http://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

        • Bruce
          Posted at 18:04 May 31, 2017
          Bruce
          Reply
          Author

          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

  • Jeroen
    Posted at 06:33 June 9, 2017
    Jeroen
    Reply
    Author

    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…

    • Jeroen
      Posted at 07:48 June 9, 2017
      Jeroen
      Reply
      Author

      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.

      • Maurice Daly
        Posted at 10:03 June 9, 2017
        Maurice Daly
        Reply
        Author

        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

        • Jeroen
          Posted at 11:31 June 9, 2017
          Jeroen
          Reply
          Author

          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!

  • Pedro Roeseler
    Posted at 16:04 June 21, 2017
    Pedro Roeseler
    Reply
    Author

    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!

  • Pedro Roeseler
    Posted at 16:28 June 21, 2017
    Pedro Roeseler
    Reply
    Author

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

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

    • Maurice Daly
      Posted at 20:37 June 21, 2017
      Maurice Daly
      Reply
      Author

      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

      • Pedro Roeseler
        Posted at 09:42 June 22, 2017
        Pedro Roeseler
        Reply
        Author

        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

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

          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

  • Sebastian
    Posted at 05:57 June 22, 2017
    Sebastian
    Reply
    Author

    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?

    • Maurice Daly
      Posted at 19:12 June 22, 2017
      Maurice Daly
      Reply
      Author

      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

  • Lance Stephens
    Posted at 19:19 June 26, 2017
    Lance Stephens
    Reply
    Author

    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!

  • Leave a Reply to aimar
    Cancel Reply