private/WinPEDrivers/CloudWinPEDriver/Save-CloudWinPEDriverIntelEthernet.ps1
|
#Requires -PSEdition Core function Save-CloudWinPEDriverIntelEthernet { <# .SYNOPSIS Downloads and expands the Intel Ethernet driver pack. .DESCRIPTION Internal helper called by Save-CloudWinPEDriver. Downloads the Intel Ethernet .zip to $env:ProgramData\OSDeployCore\downloads\, verifies the SHA256 checksum, removes stale expanded directories, and expands using Expand-CoreWinPEDriverZip. .PARAMETER DriverPackage A OSDeployWinPEDriver.Package object from Get-CloudWinPEDriver. .PARAMETER Force Re-download even if the file already exists and the hash matches. .OUTPUTS [System.IO.FileInfo] The downloaded .zip file. #> [CmdletBinding()] [OutputType([System.IO.FileInfo])] param ( [Parameter(Mandatory)] [PSTypeName('OSDeployWinPEDriver.Package')] [PSCustomObject]$DriverPackage, [Parameter()] [switch]$Force, [Parameter()] [switch]$DownloadOnly ) $package = $DriverPackage $idPrefix = ($package.Name -split '-')[0] $downloadDir = Join-Path $script:OSDeployCoreDownloadsPath $idPrefix $targetPath = Join-Path $downloadDir $package.FileName $driverDir = Join-Path $script:OSDeployCoreRepositoryPath 'winpe-drivers' | Join-Path -ChildPath $package.Architecture | Join-Path -ChildPath "$($package.Name)-$($package.Version)" Write-OSDeployWinPEDriversProgress -Message "Starting $($package.Name)" $downloadedFile = Invoke-CloudWinPEDriverDownload ` -Uri $package.DownloadUri ` -DestinationPath $targetPath ` -SearchUri $package.UpdateUri ` -ExpectedSHA256 $package.Checksums.SHA256 ` -Force:$Force if ($DownloadOnly) { return $downloadedFile } $expandedFiles = Get-ChildItem -Path $driverDir -Recurse -File -ErrorAction SilentlyContinue if (-not $expandedFiles) { if (-not (Test-Path -Path $driverDir)) { New-Item -ItemType Directory -Path $driverDir -Force | Out-Null } Write-OSDeployWinPEDriversProgress -Message "Expand: $targetPath" Write-OSDeployWinPEDriversProgress -Message "Output: $driverDir" Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Expanding '$($package.FileName)' to '$driverDir'" Expand-CoreWinPEDriverZip -Path $targetPath -DestinationPath $driverDir -Force:$Force } else { Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] '$driverDir' already contains expanded files. Skipping expansion." } foreach ($cleanupPath in @( (Join-Path $driverDir 'APPS'), (Join-Path $driverDir 'DDP_Profiles'), (Join-Path $driverDir 'DOCS'), (Join-Path $driverDir 'NVMUpdatePackage'), (Join-Path $driverDir 'Resource'), (Join-Path $driverDir 'SetupBD.exe'), (Join-Path $driverDir 'PRO1000\LINUX'), (Join-Path $driverDir 'PRO1000\Winx64\NDIS65'), (Join-Path $driverDir 'PRO1000\Winx64\NDIS68'), (Join-Path $driverDir 'PRO1000\Winx64\WS2022'), (Join-Path $driverDir 'PRO1000\Winx64\WS2025'), (Join-Path $driverDir 'PRO2500\Winx64\NDIS68'), (Join-Path $driverDir 'PRO2500\Winx64\WS2022'), (Join-Path $driverDir 'PRO2500\Winx64\WS2025'), (Join-Path $driverDir 'PRO40GB\Linux'), (Join-Path $driverDir 'PRO40GB\Winx64\NDIS65'), (Join-Path $driverDir 'PRO40GB\Winx64\NDIS68'), (Join-Path $driverDir 'PRO40GB\Winx64\WS2022'), (Join-Path $driverDir 'PRO40GB\Winx64\WS2025'), (Join-Path $driverDir 'PROAVF\FreeBSD'), (Join-Path $driverDir 'PROAVF\Linux'), (Join-Path $driverDir 'PROAVF\Winx64\NDIS65'), (Join-Path $driverDir 'PROAVF\Winx64\NDIS68'), (Join-Path $driverDir 'PROAVF\Winx64\WS2022'), (Join-Path $driverDir 'PROCGB\FreeBSD'), (Join-Path $driverDir 'PROCGB\Linux'), (Join-Path $driverDir 'PROCGB\Winx64\NDIS65'), (Join-Path $driverDir 'PROCGB\Winx64\NDIS68'), (Join-Path $driverDir 'PROCGB\Winx64\WS2022'), (Join-Path $driverDir 'PROCGB\Winx64\WS2025'), (Join-Path $driverDir 'PROXGB\FreeBSD'), (Join-Path $driverDir 'PROXGB\Linux'), (Join-Path $driverDir 'PROXGB\Winx64\NDIS65'), (Join-Path $driverDir 'PROXGB\Winx64\NDIS68'), (Join-Path $driverDir 'PROXGB\Winx64\WS2022'), (Join-Path $driverDir 'PROXGB\Winx64\WS2025'), (Join-Path $driverDir 'RDMA\FreeBSD'), (Join-Path $driverDir 'RDMA\Linux'), (Join-Path $driverDir 'RDMA\Windows\W10'), (Join-Path $driverDir 'RDMA\Windows\ws2019'), (Join-Path $driverDir 'RDMA\Windows\ws2022'), (Join-Path $driverDir 'RDMA\Windows\ws2025') )) { if (Test-Path -Path $cleanupPath) { Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Removing '$cleanupPath'" Remove-Item -Path $cleanupPath -Recurse -Force } } $downloadedFile } |