As creating a new wim with a new Windows version is pretty time consuming, I’ve created a script that does the work for you.
All you need is the new ISO and select the edition you want.
# Load MDT snappin.
Add-PSSnapIn Microsoft.BDD.PSSnapIn
# Set error log location.
$ErrLogLocation = "C:\temp\Error.html"
# Import DISM modules from Windows 10 ADK if version is not correct
#$env:Path = "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM"
#Import-Module "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM"
# Create C:\WIM to store the install.wim.
New-Item -Path ($env:HOMEDRIVE + "\") -Name WIM -ItemType Directory | Out-Null
# Select your ISO file to import.
Write-Host "Select the ISO you want to import." -BackgroundColor Green -ForegroundColor Black
$ISO = New-Object System.Windows.Forms.OpenFileDialog
$ISO.InitialDirectory = $env:HOMEDRIVE
$ISO.MultiSelect = $false
$ISO.ShowDialog()
$CheckExt = [IO.Path]::GetExtension($ISO.FileName)
if ($CheckExt -eq '.iso'){
Write-Host "Imported file: $($ISO.SafeFileName)" -BackgroundColor Green -ForegroundColor Black
}else{
Write-Host "The imported file is not a .ISO, try again..." -ForegroundColor Red
}
$ISOImagePath = Mount-DiskImage -PassThru $ISO.FileName
$GetLetter = Get-Volume -DiskImage $ISOImagePath
Write-Host "Copying $(($GetLetter.DriveLetter + ":\sources\install.wim")) to $(($env:HOMEDRIVE + "\WIM"))..." -BackgroundColor Green -ForegroundColor Black
Copy-Item -Path ($GetLetter.DriveLetter + ":\sources\install.wim") -Destination ($env:HOMEDRIVE + "\WIM")
# Set location to same as WIM file folder, create emtpy/temp folder.
$Loc = ($env:HOMEDRIVE + "\WIM")
Set-Location -Path $Loc
New-Item -Name Empty -ItemType Directory | Out-Null
New-Item -Name Temp -ItemType Directory | Out-Null
# Select the Windows image you want to extract.
$SelectedImage = @()
$SelectedImage += Get-WindowsImage -ImagePath "$Loc\install.wim" | Out-GridView -PassThru
Foreach ($Selected in $SelectedImage) {
Write-Host "You have chosen for $($Selected.ImageName)" -BackgroundColor Green -ForegroundColor Black
# Create capture WIM in \temp.
Write-Host "Creating new WIM in $Loc\Temp\install.wim..." -BackgroundColor Green -ForegroundColor Black
New-WindowsImage -ImagePath "$Loc\Temp\$($Selected.ImageDescription).wim" -CapturePath "$Loc\Empty" -Name "$($Selected.ImageDescription)" -CompressionType max | Out-Null
$TempWIM = "$Loc\Temp\$($Selected.ImageDescription).wim"
# Export install.wim to empty WIM.
Write-Host "Exporting $Loc\install.wim with $($Selected.ImageName) to $Loc\Temp\$($Selected.ImageName).wim..." -BackgroundColor Green -ForegroundColor Black
Export-WindowsImage -SourceImagePath "$Loc\install.wim" -SourceIndex $($Selected.ImageIndex) -DestinationImagePath $($TempWIM) -DestinationName "$($Selected.ImageDescription)" -CompressionType max | Out-Null
# Clear ImageIndex where ImageSize -eq 0.
$TempImage = Get-WindowsImage -ImagePath $TempWIM
$ImageSize = $TempImage | Where-Object { $_.ImageSize -eq '0'}
Remove-WindowsImage -ImagePath $TempWIM -Index $ImageSize.ImageIndex -InformationAction SilentlyContinue | Out-Null
# Import the WIM into MDT.
$WinInfo = Get-WindowsImage -ImagePath $TempWIM -Index 1
$WinVer = $($Selected.ImageDescription)
switch -Wildcard ($WinVer)
{
"Windows 10*" { $WinVer = "Windows 10" }
"Windows 8*" { $WinVer = "Windows 8" }
"Windows 7*" { $WinVer = "Windows 7" }
default { Write-Host "No valid Windows version." -ForegroundColor Red }
}
# Set PSDrive, create new if unavailable.
$PSDrive = "DS001:"
if (!(Test-Path -Path $PSDrive)){
Write-Host "Creating new PSDrive..." -BackgroundColor Green -ForegroundColor Black
New-PSDrive -Name "DS001" -PSProvider MDTProvider -Root "D:\DeploymentShare" | Out-Null
}else{
Write-Host "PSDrive is available."
}
# Import exported WIM's in to MDT.
Write-Host "Importing $($TempWIM) into MDT..." -BackgroundColor Green -ForegroundColor Black
Import-MDTOperatingSystem -Path "$($PSDrive)\Operating Systems\$($WinVer)" -SourceFile $($TempWIM) -DestinationFolder "$($Selected.ImageDescription) - $($WinInfo.Version.ToString()) - $($WinInfo.Languages)" | Out-Null
}
# Dismount mounted ISO.
Write-Host "Dismounting the ISO ($($ISO.SafeFileName))" -BackgroundColor Green -ForegroundColor Black
Dismount-DiskImage $ISO.FileName
# Remove C:\WIM folder after import.
Write-Host "Removing the folder and contents: $Loc..." -BackgroundColor Green -ForegroundColor Black
Set-Location $env:HOMEPATH
Remove-Item $Loc -Recurse -Force
# Error logging.
Write-Host "Error log available in $ErrLogLocation"
$Error | ConvertTo-Html -As List > $ErrLogLocation
#$Error.Clear()
All that is left is to load the freshly added Operating System into your Task Sequence:



Be First to Comment