private/core-driverpack/Set-OSDCloudModelDriversCacheObject.ps1

function Set-OSDCloudModelDriversCacheObject {
    <#
    .SYNOPSIS
        Refreshes the preferred ModelDrivers source in the current deployment.
    .DESCRIPTION
        CLI always prefers eligible ModelDrivers. Other workflows honor driver-pack
        selections of None and Microsoft Update Catalog. OEM metadata remains separate
        and is used when no eligible ModelDrivers source is available.
    .EXAMPLE
        Set-OSDCloudModelDriversCacheObject
        Refreshes the source after driver selection and before the workflow snapshot.
    .OUTPUTS
        None. Updates $global:OSDCloudDeploy.ModelDriversCacheObject.
    .NOTES
        ModelDriversCacheObject is a cache inventory entry, never an OEM archive object.
    #>

    [CmdletBinding()]
    param ()

    $Error.Clear()
    Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Start"
    $deployment = $global:OSDCloudDeploy
    if (-not $deployment) {
        throw 'OSDCloudDeploy must be initialized before selecting ModelDrivers.'
    }

    $deployment.ModelDriversCacheObject = $null
    if ($deployment.WorkflowName -eq 'cli' -or $deployment.DriverPackName -notin 'None', 'Microsoft Update Catalog') {
        $deployment.ModelDriversCacheObject = Get-OSDCoreModelDriversCacheObject -OSArchitecture $deployment.OSArchitecture
    }
    if ($deployment.ModelDriversCacheObject) {
        Write-Host -ForegroundColor DarkGray "[$(Get-Date -format s)] [INFO] ModelDrivers takes precedence over the OEM driver pack: $($deployment.ModelDriversCacheObject.FullName)"
    }
    elseif ($deployment.DriverPackName -eq 'ModelDrivers') {
        $deployment.DriverPackName = $deployment.DriverPackCloudObject.Name
        Write-Warning "[$(Get-Date -format s)] No eligible ModelDrivers source remains. Using the configured OEM fallback when available."
    }
}