Public/HP.HPIA/Public/Get-HPDriverPackLatest.ps1
|
function Get-HPDriverPackLatest { [CmdletBinding()] param( [string]$Platform, [switch]$URL, [switch]$Download ) $platformId = if ($Platform) { $Platform } else { (Get-CimInstance -ClassName Win32_BaseBoard -ErrorAction Stop).Product } $osList = @(Get-HPOSSupport -Platform $platformId) foreach ($operatingSystem in 'Windows 11', 'Windows 10') { $osNumber = if ($operatingSystem -eq 'Windows 11') { '11.0' } else { '10.0' } $versions = @($osList | Where-Object { $_.OSDescription -match [regex]::Escape($operatingSystem) } | Select-Object -ExpandProperty OSReleaseIdDisplay -Unique | Sort-Object -Descending) foreach ($version in $versions) { try { $driverPack = @(Get-HPSoftPaqItems -Platform $platformId -OSVersion $version -OS $osNumber | Where-Object { $_.Category -match 'Driver Pack' } | Select-Object -First 1) } catch { continue } if ($driverPack) { break } } if ($driverPack) { break } } if (-not $driverPack) { Write-Verbose "No driver pack found for platform '$platformId'."; return $false } $driverPack = $driverPack[0] $downloadUrl = if ($driverPack.URL -match '^https?://') { $driverPack.URL } else { "https://$($driverPack.URL)" } if ($Download) { $paths = Get-OEMHPIAPaths $null = New-Item -Path $paths.DriverPacks -ItemType Directory -Force $downloadPath = Join-Path $paths.DriverPacks "$($driverPack.id).exe" Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadPath -UseBasicParsing -ErrorAction Stop return Get-Item -LiteralPath $downloadPath } if ($URL) { return $downloadUrl } $driverPack } |