Configuration ManagerHow-to

OSD driver management in Configuration Manager: driver packages and Apply Driver Package

Build one driver package per model, apply it with a WMI-conditioned Apply Driver Package step, keep boot images lean and prove every device got its drivers.

When an OS deployment fails or ends with yellow warnings in Device Manager, drivers are a usual suspect: a boot image without the right network driver, or a model that picked up another model's drivers. In this post I'll set up driver management in Configuration Manager (still called SCCM by many) the predictable way, with one driver package per model applied by a conditioned Apply Driver Package step, and show where Auto Apply Drivers and boot image drivers fit and how to prove each device got what it needed.

Errors this guide fixes

  • The drivers for this device are not installed. (Code 28)Device Manager
How this guide is organized: How it works → Step-by-step → Verify → Tips and gotchasFlow diagram of the article's sections in reading order: 1. How it works. 2. Step-by-step (5 steps: Import the vendor driver pack; Create one driver package per model; Add a conditioned Apply Driver Package group per model; Decide what happens to unknown models; Keep boot images lean). 3. Verify. 4. Tips and gotchas. Toolbox: 0x80070002, dev.log, ipconfig, New-CMTSStepApplyDriverPackage, Add-CMTaskSequenceStep.1How it works2Step-by-step3Verify4Tips and gotchas1Import the vendordriver pack2Create one driverpackage per model3Add a conditionedApply Driver Pack…4Decide whathappens to unkno…5Keep boot imagesleanTOOLBOX0x80070002dev.logipconfigNew-CMTSStepApplyDriverPackageAdd-CMTaskSequenceStepHow this guide is organized: How it works → Step-by-step → Verify → Tips and gotchasFlow diagram of the article's sections in reading order: 1. How it works. 2. Step-by-step (5 steps: Import the vendor driver pack; Create one driver package per model; Add a conditioned Apply Driver Package group per model; Decide what happens to unknown models; Keep boot images lean). 3. Verify. 4. Tips and gotchas. Toolbox: 0x80070002, dev.log, ipconfig, New-CMTSStepApplyDriverPackage, Add-CMTaskSequenceStep.1How it works2Step-by-step1Import the vendor driver pack2Create one driver package per model3Add a conditioned Apply Driver Package groupper model4Decide what happens to unknown models5Keep boot images lean3Verify4Tips and gotchasTOOLBOX0x80070002dev.logipconfigNew-CMTSStepApplyDriverPackageAdd-CMTaskSequenceStep
At a glance: how this guide is organized · 5 steps · 5 key settings and tools

How it works#

The driver catalog lives in Software Library › Operating Systems. The Drivers node lists every imported driver with the class, version, signature and supported hardware read from its INF file. Driver Packages copy selected drivers to a package source folder that you distribute like any other content.

Two task sequence steps install drivers during a deployment. Both run in Windows PE after Apply Operating System Image. They stage drivers into the new Windows installation, and Windows Setup installs the ones that match the hardware when it runs.

Auto Apply DriversApply Driver Package
What it stagesCatalog drivers that match the device's hardware: the best match only, or all compatible drivers so Windows Setup choosesEvery driver in one driver package; Windows Setup uses the ones it needs
How you scope itDriver categoriesOne step (or group) per model with a WMI condition
Stand-alone mediaNot an optionRequired: Microsoft Learn says you must use this step with stand-alone media
PredictabilityChanges whenever someone imports a driver that also matchesThe model gets exactly the package you tested

Beyond a small lab, per-model packages win: you test a package once, and later imports can't change what that model receives.

Step-by-step#

How the Drivers group picks drivers for each modelStep 1: Apply Operating System Image. Then the Windows and network settings steps; driver steps run in Windows PE after them. Step 2: Set DriverPackageApplied to False. At the start of the Drivers group. Step 3: Run the model group whose WMI query matches. Apply Driver Package with the DISM recurse option, then set DriverPackageApplied to True. Step 4: Fall back to Auto Apply Drivers. Only when DriverPackageApplied equals False: best matched drivers from a small, tested category. Step 5: Let Windows Setup install matching drivers. The Drivers group sits before Setup Windows and ConfigMgr.1Apply Operating SystemImageThen the Windows and networksettings steps; driver steps run inWindows PE after them.2Set DriverPackageApplied toFalseAt the start of the Drivers group.3Run the model group whoseWMI query matchesApply Driver Package with theDISM recurse option, then setDriverPackageApplied to True.4Fall back to Auto ApplyDriversOnly when DriverPackageAppliedequals False: best matched driversfrom a small, tested category.5Let Windows Setup installmatching driversThe Drivers group sits before SetupWindows and ConfigMgr.How the Drivers group picks drivers for each modelStep 1: Apply Operating System Image. Then the Windows and network settings steps; driver steps run in Windows PE after them. Step 2: Set DriverPackageApplied to False. At the start of the Drivers group. Step 3: Run the model group whose WMI query matches. Apply Driver Package with the DISM recurse option, then set DriverPackageApplied to True. Step 4: Fall back to Auto Apply Drivers. Only when DriverPackageApplied equals False: best matched drivers from a small, tested category. Step 5: Let Windows Setup install matching drivers. The Drivers group sits before Setup Windows and ConfigMgr.1Apply Operating System ImageThen the Windows and network settings steps; driversteps run in Windows PE after them.2Set DriverPackageApplied to FalseAt the start of the Drivers group.3Run the model group whose WMI querymatchesApply Driver Package with the DISM recurse option,then set DriverPackageApplied to True.4Fall back to Auto Apply DriversOnly when DriverPackageApplied equals False: bestmatched drivers from a small, tested category.5Let Windows Setup install matching driversThe Drivers group sits before Setup Windows andConfigMgr.
Figure 1 · Process How the Drivers group picks drivers for each model. The task sequence logic that steps 3 and 4 build: each known model gets its tested package, and only unknown models fall back to Auto Apply Drivers.

1. Import the vendor driver pack#

Download the enterprise driver pack for the exact model and Windows release from the hardware vendor and extract it to a share, for example \\cm01\Sources\Drivers\Source\Dell\Latitude 7450\Win11. Then go to Software Library › Operating Systems › Drivers and select Import Driver:

  • Choose Import all drivers in the following network path (UNC) and decide what happens to categories when a driver is already in the catalog (append, keep, overwrite or skip).
  • The site server needs Read permission on the source folder, or the import fails.
  • On Driver Details, hide unsigned drivers (Microsoft recommends signed drivers) and assign a category such as Latitude 7450 - Win11. Categories are how you scope Auto Apply Drivers.
  • The supported-platform list comes from the INF and isn't always accurate; spot-check it.

2. Create one driver package per model#

  1. Create a new, empty folder for the package, for example \\cm01\Sources\Drivers\Packages\Latitude7450-Win11. Each driver package needs its own empty folder that no other driver package uses, and the site server account needs Full control on it.
  2. In Driver Packages, select Create Driver Package, then fill in the Driver Manufacturer and Driver Model fields on the General tab. They appear as searchable columns and make cleanup easier.
  3. Add the imported drivers (on the wizard's Add Driver to Packages page, or later with Drivers › Edit › Driver Packages). Microsoft recommends fewer than 500 drivers per package for task sequence use.
  4. Select Distribute Content and target the distribution points your task sequence uses.

3. Add a conditioned Apply Driver Package group per model#

First find the exact model string on a test device:

PowerShell
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object Manufacturer, Model
Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object Vendor, Name, Version

Lenovo reports a machine type in Model and the friendly name in Win32_ComputerSystemProduct.Version, so query that class for Lenovo devices.

In the task sequence editor, add a Drivers group after Apply Operating System Image and the Windows and network settings steps, and before Setup Windows and ConfigMgr. Inside it, add one group per model:

  1. On the group's Options tab, select Add Condition › Query WMI, keep the namespace root\cimv2 and enter a query such as the one below.
  2. In the group, add Drivers › Apply Driver Package, pick the model's package and select Install driver package via running DISM with recurse option, so every subfolder of the package is processed.
  3. Add a Set Task Sequence Variable step that sets DriverPackageApplied to True.
Text
SELECT * FROM Win32_ComputerSystem WHERE Model LIKE '%Latitude 7450%'

Test each query on real hardware; if this returns an object, the condition is true:

PowerShell
Get-CimInstance -Query "SELECT * FROM Win32_ComputerSystem WHERE Model LIKE '%Latitude 7450%'"

4. Decide what happens to unknown models#

Set DriverPackageApplied to False at the start of the Drivers group. After the model groups, add an Auto Apply Drivers step with the condition Task sequence variable DriverPackageApplied equals False, Install only the best matched compatible drivers, and Limit driver matching to only consider drivers in selected categories pointing at a small, tested fallback category, so new models still get network and storage drivers.

5. Keep boot images lean#

Windows PE needs only network and storage drivers. Add them with Drivers › Edit › Boot images (or the boot image's Drivers tab) and let the distribution points update. Match the Windows PE version of your Windows ADK (Windows 11 drivers with the ADK for Windows 11) and the boot image's architecture. Without a network driver, Windows PE can't reach the management point; without a storage driver, Format and Partition Disk finds no disk (Intel VMD systems need the Intel Rapid Storage Technology driver). While testing, select Enable command support (testing only) on the boot image's Customization tab and press F8 for ipconfig and diskpart.

Verify#

  1. smsts.log: confirm that exactly one model group's condition evaluated to true, the package downloaded, and the DISM command line that the step ran returned success. If no model group ran, the WMI string doesn't match the hardware. See reading smsts.log for where the log lives at each phase.
  2. Device Manager: no unknown devices and no The drivers for this device are not installed. (Code 28).
  3. PowerShell (elevated) on the finished device:
PowerShell
# Devices with a problem code (28 = no driver installed)
Get-CimInstance -ClassName Win32_PnPEntity | Where-Object { $_.ConfigManagerErrorCode -ne 0 } |
    Select-Object Name, DeviceID, ConfigManagerErrorCode

# Third-party drivers in the driver store, with versions
Get-WindowsDriver -Online | Sort-Object ProviderName |
    Select-Object ProviderName, ClassName, Version, Date, OriginalFileName

Good looks like this: the first command returns nothing and the second shows your tested versions. For a device that still has no driver, search %windir%\INF\setupapi.dev.log for its hardware ID.

Tips and gotchas#

  • Disabling a driver only affects Auto Apply Drivers. A disabled driver that's still in a driver package is staged by Apply Driver Package anyway, so remove bad drivers from the package and update its distribution points.
  • Update, don't redistribute: Update Distribution Points copies only changed content.
  • Scripting: the ConfigurationManager module has New-CMTSStepApplyDriverPackage (with -PackageId and -EnableRecurse) and Add-CMTaskSequenceStep.
  • Error codes: for task sequence codes such as 0x80070002, see the task sequence and OSD error codes quick reference. For in-place upgrades, see upgrading to Windows 11 with Configuration Manager.

References#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

Intune Subject Matter Expert in Cairo, Egypt, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)