From beb48e500ecef85ecf1768e9eedc9e2b028d0913 Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:24:49 -0800 Subject: [PATCH] Adds generic fallback for driver matching Implements a generic model-based matching strategy for manufacturers without explicit handling rules in the driver mapping logic. Previously, unsupported manufacturers would immediately return null without attempting to match driver rules. Now falls back to comparing normalized model names against available rules, improving driver detection coverage for manufacturers that don't require specialized matching logic. Updates logging to distinguish between successful generic matches and complete failures to find matching drivers. --- FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 b/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 index 88d994e..da7816b 100644 --- a/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 +++ b/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 @@ -657,7 +657,16 @@ function Find-DriverMappingRule { return $null } default { - WriteLog "DriverMapping: Automatic matching not implemented for manufacturer '$normalizedManufacturer'." + # Generic fallback for manufacturers without explicit handling + foreach ($rule in $rulesForMake) { + if (-not $rule.PSObject.Properties['Model']) { continue } + $ruleModelNorm = ConvertTo-ComparableModelName -Text $rule.Model + if (-not [string]::IsNullOrWhiteSpace($ruleModelNorm) -and $ruleModelNorm -eq $normalizedModel) { + WriteLog "DriverMapping: Manufacturer '$normalizedManufacturer' model '$normalizedModel' matched '$($rule.Model)'." + return $rule + } + } + WriteLog "DriverMapping: No generic match found for manufacturer '$normalizedManufacturer' using model '$normalizedModel'." return $null } }