Open AkosBakos opened 1 year ago
This is a known issue where OSDCloud will pick the latest released Driver Pack. While selecting the Win10 DriverPack is ideal for this 1 Model, there are other models where a Win10 DriverPack is several years old, and a more recent Win11 DriverPack is available. In that example, what should be selected? The DriverPack several years old?
As a workaround you can use OSDCloudGUI. If you are set on the Command Line and are using your own PowerShell Script as a wrapper, then write a few lines in before launching OSDCloud to set the DriverPack for your specific model. There are Global Variables you can set to do this.
The released dates are the same. But somehow the W11 pack will downloaded, which is in this customer case wrong. Because the Win11 driver packs cannot be applied for Win10 OS. The specialize phase fails.
I was decided against using the DriverPack* global variables. Because I need the flexibility for different HWs.
So, my wrapper looks like so and it works: $Params = @{ OSVersion = "Windows 10" OSBuild = "21H2" OSEdition = "Pro" OSLanguage = "de-de" ZTI = $true Firmware = $true } Start-OSDCloud @Params
$Get_ProductInfo = (Get-MyComputerProduct) $DriverPack = Get-OSDCloudDriverPacks | Where-Object {($.Product -contains $Get_ProductInfo) -and ($.OS -match Params.OSVersion)}
Invoke-OSDCloudDriverPack.ppkg does the magic ;-)
Yes, the Release Date is the same, but in a single file line, there can't be a tie. One of them has to "win"
Again, I am aware of this and will resolve when time allows, and assuming this is the top Priority. I'm tight on time, and since there are workarounds that can be done, the Priority is not high. OSDCloudGUI allows the selection, I apologize if the Command Line doesn't, but if you want to spend time updating the script and make a Pull Request, feel free, I'd appreciate it.
Hi @AkosBakos
Would you be so kind as to re-paste your workaround above in a code block. There is some non-rendered text, which makes it hard to evaluate. Thanks!
Sure, @skyblaster - here we are: $DriverPack = Get-OSDCloudDriverPacks` | Where-Object {($_.Product -contains $Get_ProductInfo) -and ($.OS -match $Params.OSVersion)}
Or either look at this script here: https://github.com/AkosBakos/OSDCloud/blob/main/MicrosoftSurfaceDriverIssue.ps1
I've made changes to the DriverPack selection in this month's OSDCloud update, can you please revalidate to see if this is still an issue?
I encountered this issue with a Dell 3520 using OSD 23.3.29.1. I'm using OSDPad to call a script with the following contents, however the Win11 driver pack was automatically downloaded:
Start-OSDCloud -OSVersion 'Windows 10' -OSBuild 22H2 -OSEdition Pro -OSLanguage en-us -OSLicense Retail -Firmware -Verbose
Ahh, so you won't get many of the changes if you are using the Start-OSDCloud function as I plan on killing that off. It will be replaced in the future with Start-OSCloudCLI. Keep in mind the new function should not be used for anything production related until it is released, but you can test it out and see how it works for now. As far as killing off Start-OSDCloud, I won't remove it, but it will not get any new OS's added and it will not be linked to Azure AI, and obviously the updated driver pack matching won't work
I'd love to test Start-OSDCloudCLI, but can't seem to figure out how to get around the following: https://github.com/OSDeploy/OSD/blob/a89b1276a4f008686bf9ddb8c898df9c501690e9/Public/Start-OSDCloudCLI.ps1#L14 https://github.com/OSDeploy/OSD/blob/a89b1276a4f008686bf9ddb8c898df9c501690e9/Public/Start-OSDCloudCLI.ps1#L711
I'd love to test Start-OSDCloudCLI, but can't seem to figure out how to get around the following:
It's not ready yet ... expect bugs
Hi @OSDeploy
We're encountering the same problem where a Windows 11 driver pack is being installed on a Windows 10 device, even though the Windows 10 driver pack is actually more up-to-date. This mismatch is causing various issues.
Is it now possible to check which OS version is installed and, based on that information, obtain the appropriate driver pack?
We use the Start-OSDCloud (Invoke-OSDCloud)
@StevenVBeek, have you resolved your issue yet? I'm looking at the underlining code, and you should be able to do this today by pre-setting some variables before you call Start-OSDCloud
Here is a snip from my script to trigger OSDCloud on my HP Devices:
$OSVersion = 'Windows 10' #Used to Determine Driver Pack $OSReleaseID = '22H2' #Used to Determine Driver Pack $OSName = 'Windows 10 22H2 x64' $OSEdition = 'Pro' $OSActivation = 'Retail' $OSLanguage = 'en-us'
$Product = (Get-MyComputerProduct) $DriverPack = Get-OSDCloudDriverPack -Product $Product -OSVersion $OSVersion -OSReleaseID $OSReleaseID
$Global:MyOSDCloud = [ordered]@{ Restart = [bool]$False RecoveryPartition = [bool]$true OEMActivation = [bool]$True WindowsUpdate = [bool]$true WindowsUpdateDrivers = [bool]$true WindowsDefenderUpdate = [bool]$true SetTimeZone = [bool]$False ClearDiskConfirm = [bool]$False }
if ($DriverPack){ $Global:MyOSDCloud.DriverPackName = $DriverPack.Name }
if (Test-HPIASupport){
$Global:MyOSDCloud.HPTPMUpdate = [bool]$True
$Global:MyOSDCloud.HPIAALL = [bool]$true
$Global:MyOSDCloud.HPBIOSUpdate = [bool]$true
}
$Global:MyOSDCloud
Write-Host "Starting OSDCloud" -ForegroundColor Green write-host "Start-OSDCloud -OSName $OSName -OSEdition $OSEdition -OSActivation $OSActivation -OSLanguage $OSLanguage"
Start-OSDCloud -OSName $OSName -OSEdition $OSEdition -OSActivation $OSActivation -OSLanguage $OSLanguage
I have an example: Surface Laptop 3. When I am querying Get-OSDCloudDriverPacks | ? name -match 'Surface Laptop 3 15 Intel' --> getting two results
One is for Win10, and one is for Win11. I am staging my device with Win10, but I am receiving the driver pack for Win11, which cannot be applied in the specialize phase.
In the catalog we would have a tag for OS.![1](https://user-images.githubusercontent.com/44706641/198260809-bbdad769-a6ee-444c-99d0-71323787c1c7.jpg)
It would be nice to check with the $Global:OSDCloud:OSVersion which driver pack fits for the target OS. $DriverPack = Get-OSDCloudDriverPacks | Where-Object {($_.Product -contains $Get_ProductInfo) -and ($.OS -match $Params.OSVersion)}