It can be a real hassle creating new Driver Packages, especially if you want to have some order in your repository.
If you don’t want to go ‘all in’, like when you’re using the Coretech tool: this little script that I’ve created might come in handy.
The idea is pretty simple, just enter manufacturer, os and model,
and the script will then:
- create a folder: DriverSource OS Manufacturer Model
- create a folder: PackageSource OS Manufacturer Model
- create a new Driver Package
- create a new Driver Category (optional)
all with the right names and in the right location… neat huh?
The Script
The Script reads settings from Settings.xml, located in the same folder as the script.
If it doesn’t exists, it’ll be created.
The first time the script runs it will automatically go to the settings tab.
(no need to modify the xml file manually)
The What If button shows the commands that will be executed.
Now go ahead and create some Driver Packages 🙂
Requirements
You need the ConfigurationManager PowerShell Module available.
If you don’t have the ConfigMgr Console installed, you need to modify the Import-Module command.
I’m using the following line:
Import-Module ($env:SMS_ADMIN_UI_PATH.Substring(0,$env:SMS_ADMIN_UI_PATH.Length – 5) + ‘ConfigurationManager.psd1’)
The End
I’m using PowerShell Studio by Sapien to build the GUI, it really simplifies the process.
If you haven’t tried it, I really recommend that you do so.
And here’s the link to the script, it contains both the .ps1 version and the PowerShell Studio project file…
I’d really love to hear your two cents…
/Andreas
Very nice and neat! Thank you. I’ve customized it to work with our naming standard etc. Looking to add driver import using the Driverpackage Source.
I found code at jamesbannanit.com to import drivers, add to bottom of $btnCreatePackage_Click,:
$PSD = Get-PSDrive -PSProvider CMSite
Set-Location C:
$Drivers = Get-ChildItem -Path $sDriverSourcePath -Include *.inf -Recurse
CD “$($PSD):”
$DriverPackage = Get-CMDriverPackage -Name $NewDriverPackageName
Write-Host $sNewCategory
$DriverCategory01 = Get-CMCategory -Name $sNewCategory
$DriverCategories = @()
$DriverCategories += $DriverCategory01
# 1.4 Import Drivers
WriteLog -text “Importing Drivers”
foreach ($driver in $drivers)
{
Import-CMDriver -UncFileLocation $Driver.FullName
-DriverPackage $DriverPackage
-EnableAndAllowInstall $true
-AdministrativeCategory $DriverCategories
-ImportDuplicateDriverOption AppendCategory
-ErrorAction SilentlyContinue
-Verbose
}
WriteLog -text “Importing complete”
}
My plan was to add driver import as well, but somehow i didn’t. It turned out that it’s so much slower to use Import-CMDriver then to do it through the console, but maybe it would be possible to use PowerShell workflow to speed things up.
I’m glad you liked it, and thank you for your suggestion for improvement!