當 Windows 無限卡在「正在自我修復」或進不去系統時,多半會用安裝光碟(WinPE)開機進修復模式。此時很多人會直覺輸入:
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
結果卻報錯或無效。原因其實很單純:
- 你現在所在的
X:\是 WinPE(安裝光碟載入的迷你系統),不是你硬碟上的那套 Windows。 sfc /scannow與DISM /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.wim或install.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