Windows Server 2012r2 Iso -
[string]$UpdatesFolder, # Folder with .msu updates (optional) [string]$DriversFolder, # Folder with .inf drivers (optional) [string]$PostInstallScript, # PowerShell script to run after setup (optional) [string]$ProductKey, # Product key for unattended install (optional) [string]$AdminPassword # Local admin password (optional) ) $ErrorActionPreference = "Stop" Check admin rights if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) Write-Host "Please run as Administrator" -ForegroundColor Red exit 1 Create working directory $WorkDir = "C:\WindowsServerISO_Build" $MountDir = "$WorkDir\mount" $ExtractDir = "$WorkDir\extract" $TempDir = "$WorkDir\temp"
$BootFile = "$ExtractDir\boot\etfsboot.com" & $OscdimgPath -bootdata:2#p0,e,b$BootFile -u2 -udfver102 $ExtractDir $OutputISOPath Write-Host "`nCleaning up temporary files..." -ForegroundColor Gray Remove-Item $WorkDir -Recurse -Force windows server 2012r2 iso
[Parameter(Mandatory=$true)] [string]$OutputISOPath, # Custom ISO output path [string]$UpdatesFolder, # Folder with
$UnattendContent += @" </FirstLogonCommands> <OOBE> <HideEULAPage>true</HideEULAPage> <NetworkLocation>Work</NetworkLocation> <ProtectYourPC>3</ProtectYourPC> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> </OOBE> </component> </settings> </unattend> "@ $UnattendPath = "$ExtractDir\unattend.xml" $UnattendContent | Out-File -FilePath $UnattendPath -Encoding UTF8 Copy to mount (for boot.wim as well) $BootWimPath = "$ExtractDir\sources\boot.wim" $BootMountDir = "$WorkDir\boot_mount" New-Item $BootMountDir -ItemType Directory -Force | Out-Null updates # Requires: Windows ADK
Write-Host " n========================================" -ForegroundColor Cyan Write-Host "Windows Server 2012 R2 Custom ISO Builder" -ForegroundColor Cyan Write-Host "======================================== n" -ForegroundColor Cyan Write-Host "[1/7] Extracting source ISO..." -ForegroundColor Yellow Mount-DiskImage -ImagePath $SourceISOPath -PassThru | ForEach-Object Get-Volume).DriveLetter + ":" Copy-Item "$DriveLetter*" -Destination $ExtractDir -Recurse -Force Dismount-DiskImage -ImagePath $SourceISOPath Step 2: Mount WIM image (Server Standard + GUI) Write-Host "[2/7] Mounting Windows image..." -ForegroundColor Yellow $WimPath = "$ExtractDir\sources\install.wim" $Index = 2 # Index 2 = Windows Server 2012 R2 Standard (Server with GUI)
# ====================================================== # Windows Server 2012 R2 Custom ISO Builder # Features: Unattended install, driver injection, updates # Requires: Windows ADK, oscdimg.exe, admin rights # ====================================================== param( [Parameter(Mandatory=$true)] [string]$SourceISOPath, # Original Windows Server 2012 R2 ISO
else Write-Host "[4/7] Skipping updates" -ForegroundColor Gray Write-Host "[5/7] Creating unattended installation file..." -ForegroundColor Yellow