private/Export-EditionWim.ps1
|
function Export-EditionWim { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $SourceImagePath, [Parameter(Mandatory)] [object[]] $Images, [Parameter(Mandatory)] [string] $EditionName, [Parameter(Mandatory)] [string] $DestinationWim ) $testDestinationWimParams = @{ Path = $DestinationWim } if (Test-Path @testDestinationWimParams) { $removeDestinationWimParams = @{ Path = $DestinationWim Force = $true } Remove-Item @removeDestinationWimParams } $editionImages = $Images | Where-Object { $_.Name -match "Windows Server 2025 $EditionName" -and $_.Name -notmatch 'Azure' } if (-not $editionImages) { throw "No Windows Server 2025 $EditionName images were found." } foreach ($image in $editionImages) { Write-Verbose "Exporting $($image.Name) from index $($image.Index)..." $exportArgs = @( '/Export-Image' "/SourceImageFile:$SourceImagePath" "/SourceIndex:$($image.Index)" "/DestinationImageFile:$DestinationWim" '/Compress:max' '/CheckIntegrity' ) dism @exportArgs if ($LASTEXITCODE -ne 0) { throw "DISM export failed for $($image.Name)" } } } |