Delete Prep-VirtIODrivers.ps1

This commit is contained in:
2025-11-12 14:35:13 +01:00
parent 6dfcf10446
commit 460710b796

View File

@@ -1,129 +0,0 @@
<#
.SYNOPSIS
Pre-stage VirtIO drivers on a VMware Windows Server 2025 VM prior to migration to Proxmox.
.DESCRIPTION
- Downloads (or uses provided) virtio-win.iso
- Mounts ISO and installs storage (vioscsi, viostor), network (NetKVM), balloon drivers
- Verifies driver install
- Unmounts ISO
.PARAMETER IsoPath
Optional. Local path to virtio-win.iso if you already downloaded it.
.PARAMETER Download
Switch. Force download latest virtio-win.iso from Fedora mirrors.
.EXAMPLE
.\Prep-VirtIODrivers.ps1 -Download
.EXAMPLE
.\Prep-VirtIODrivers.ps1 -IsoPath "C:\Temp\virtio-win.iso"
#>
param(
[string]$IsoPath,
[switch]$Download
)
# --- Require admin ---
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Error "Run this script in an elevated PowerShell (Run as Administrator)."
exit 1
}
$ErrorActionPreference = 'Stop'
# --- Prepare working paths ---
$WorkDir = Join-Path $env:TEMP "virtio-prep"
New-Item -ItemType Directory -Force -Path $WorkDir | Out-Null
if (-not $IsoPath -and -not $Download) {
# default to download
$Download = $true
}
if ($Download) {
$IsoPath = Join-Path $WorkDir "virtio-win.iso"
Write-Host "Downloading latest virtio-win.iso..." -ForegroundColor Cyan
# Primary URL (Fedora people direct-downloads)
$url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso"
try {
Invoke-WebRequest -Uri $url -OutFile $IsoPath -UseBasicParsing
}
catch {
Write-Host "Primary download failed, trying mirror..." -ForegroundColor Yellow
# Fallback mirror (if needed, simple same path assumption)
$url2 = "https://dl.fedoraproject.org/pub/alt/virtio-win/latest-virtio/virtio-win.iso"
Invoke-WebRequest -Uri $url2 -OutFile $IsoPath -UseBasicParsing
}
Write-Host "Downloaded to $IsoPath" -ForegroundColor Green
}
elseif (-not (Test-Path $IsoPath)) {
Write-Error "IsoPath not found: $IsoPath"
exit 1
}
# --- Mount ISO ---
Write-Host "Mounting ISO..." -ForegroundColor Cyan
$mount = Mount-DiskImage -ImagePath $IsoPath -PassThru
$vol = ($mount | Get-Volume)
$cd = $vol.DriveLetter + ":"
Write-Host "Mounted at $cd" -ForegroundColor Green
# Driver roots (Windows Server 2025 uses the 'w11' folder)
$Paths = @(
Join-Path $cd "vioscsi\w11\amd64", # VirtIO SCSI storage
Join-Path $cd "viostor\w11\amd64", # VirtIO block storage
Join-Path $cd "NetKVM\w11\amd64", # VirtIO network
Join-Path $cd "Balloon\w11\amd64" # Memory balloon
)
# --- Install drivers with pnputil (online) ---
Write-Host "Installing VirtIO drivers..." -ForegroundColor Cyan
foreach ($p in $Paths) {
if (Test-Path $p) {
Write-Host " -> $p" -ForegroundColor DarkCyan
# add + install all INF in this dir (no recurse needed; w11\amd64 holds INF)
pnputil /add-driver "$p\*.inf" /install | Out-Null
} else {
Write-Warning "Path not found: $p"
}
}
# --- Optional extras (uncomment if you want them now) ---
# QXL display driver (not required for server core/headless):
# pnputil /add-driver "$cd\qxldod\w11\amd64\*.inf" /install | Out-Null
# VioSerial / pvpanic (not strictly required for boot):
# pnputil /add-driver "$cd\vioserial\w11\amd64\*.inf" /install | Out-Null
# pnputil /add-driver "$cd\pvpanic\w11\amd64\*.inf" /install | Out-Null
# --- Verify key drivers staged ---
Write-Host "`nVerifying driver presence..." -ForegroundColor Cyan
$need = @('vioscsi','viostor','NetKVM','Balloon')
$drivers = (pnputil /enum-drivers) -join "`n"
foreach ($n in $need) {
if ($drivers -match $n) {
Write-Host (" [+] {0} present" -f $n) -ForegroundColor Green
} else {
Write-Warning (" [!] {0} NOT found in driver store" -f $n)
}
}
# --- Unmount ISO ---
Write-Host "`nUnmounting ISO..." -ForegroundColor Cyan
Dismount-DiskImage -ImagePath $IsoPath
Write-Host "`nAll done." -ForegroundColor Green
Write-Host "Next steps:" -ForegroundColor Yellow
Write-Host @"
1) Maak nu je Veeam backup (of export) van deze VM.
2) Herstel in Proxmox:
- Disk op **VirtIO SCSI** (controller: virtio-scsi-pci; boot: scsi0)
- NIC op **VirtIO (paravirtualized)**
- Voeg CD-ROM met virtio-win.iso toe voor het geval je nog wilt bij-installeren
3) Start de VM. Na eerste boot kun je (optioneel) 'virtio-win-guest-tools.exe' draaien
vanaf de ISO voor QEMU agent en aanvullende drivers.
"@