在 Proxmox VE(PVE)Windows VM 修復教學:WinPE 下 sfc /scannow、DISM /Online 失效?用 drvload + 離線 DISM 一次搞定

當 Windows 無限卡在「正在自我修復」或進不去系統時,多半會用安裝光碟(WinPE)開機進修復模式。此時很多人會直覺輸入:

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

結果卻報錯或無效。原因其實很單純:

  • 你現在所在的 X:\WinPE(安裝光碟載入的迷你系統),不是你硬碟上的那套 Windows。
  • sfc /scannowDISM /Online 只會針對「目前正在執行的系統」動手——也就是 WinPE 自己,所以在 WinPE 會不支援或修不到重點
  • PVE 的 VM 上,系統磁碟多半走 VirtIO/SCSI,WinPE 又未必內建驅動,導致 list volume 甚至看不到你的 NTFS 分區。

步驟 1:載入 PVE VM 的儲存控制器驅動(drvload

假設你已經把 virtio-win.iso 掛到 VM 的光碟機,代號為 **D:**(常見)

SCSI 範例(vioscsi):

drvload D:\vioscsi\w10\amd64\vioscsi.inf

若是 VirtIO-Block(viostor):

drvload D:\viostor\w10\amd64\viostor.inf

成功後,WinPE 才會辨識你的虛擬磁碟與分區。

步驟 2:用「最簡」diskpart 找出系統分區與安裝光碟

只需要三行,不用複雜操作:

diskpart
list volume
exit

典型輸出(D:=virtio-win.iso、E:=系統分區、F:=安裝光碟

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size   Status  Info
  ----------  ---  -----------  -----  ----------  -----  ------  --------
  Volume 0     F   WIN11_X64    UDF    DVD-ROM       6 GB  Healthy
  Volume 1     C                FAT32  Partition   100 MB  Healthy  System
  Volume 2                      RAW    Partition    16 MB  Healthy  Reserved
  Volume 3     E                NTFS   Partition     99 GB  Healthy
  Volume 4     D   virtio-win   CDFS   DVD-ROM     600 MB  Healthy

如何判讀與套用:

  • E: → 你的 Windows 系統分區(NTFS、容量最大)
  • F:安裝光碟(含 \sources\install.wiminstall.esd
  • D:VirtIO 驅動 ISO(剛剛 drvload 的來源)

後續指令都以 E: 當系統分區、F: 當安裝光碟示範。

步驟 3:用「離線 DISM」+ 安裝光碟來源修復系統(無網路也可)

WIM 來源:

DISM /Image:E:\ /Cleanup-Image /RestoreHealth /Source:F:\sources\install.wim /LimitAccess

ESD 來源(先查索引、選正確版本):

DISM /Get-WimInfo /WimFile:F:\sources\install.esd
DISM /Image:E:\ /Cleanup-Image /RestoreHealth /Source:ESD:F:\sources\install.esd:<Index> /LimitAccess

(可選)離線 SFC 再掃一遍:

sfc /scannow /offbootdir=E:\ /offwindir=E:\Windows

/LimitAccess 代表只用本機來源,不會連網;很適合沒有 DHCP 或無網環境的 PVE VM。

步驟 4(選用):修復開機引導(Bootloader)

若修完系統檔仍無法開機,可以處理 BCD / MBR:

bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd