Files
windows-unattend/QUICKSTART.md
Timmy fd795f3d66 改用 Ventoy Auto Install plugin 部署;DiskID 改成 Ventoy 變數避免誤格化 USB
- unattend.xml: DiskID 由硬寫 0 改成 $$VT_WINDOWS_DISK_1ST_NONVTOY$$,
  防止在 Ventoy 下把 USB 本身當成安裝目標
- ventoy.json: 新增 Auto Install plugin 設定範本
- QUICKSTART.md: 用 Ventoy 流程重寫 USB 佈置與 VM 測試章節
- README.md: 放置位置表新增 Ventoy 路徑為預設
- CLAUDE.md: 新增專案導覽文件,標註 Ventoy-only 前提與 DiskID 變數

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 10:48:03 +08:00

7.4 KiB
Raw Blame History

QUICKSTART — 從零到自動安裝 Windows

照著做一次就能跑出一個「Ventoy 開機 → 選 ISO → 自動裝完 Windows → 自動登入 → 跑 Setup.ps1 → 重開機」的流程。

預設情境x64、UEFI+GPT、繁體中文、Ventoy USBventoy.net)載入多個 ISO。


0. 事前準備

需要準備:

  • Windows 10 或 11 官方 ISOmicrosoft.com 取得)
  • 已刷好 Ventoy 的 USB 隨身碟(≥ 16 GB 建議,因為會同時放 ISO 與 script
  • 一台測試機或 VM強烈建議先在 VM 驗證)
  • 本專案的 unattend.xmlventoy.json

編輯 unattend.xml 的必改項目:

行為 原值 要改成
產品序號 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX 你的序號,或 KMS 通用金鑰,或整個 <ProductKey> 節點刪掉
管理員密碼 P@ssw0rd!(兩處:LocalAccountAutoLogon 你的密碼
組織名 YourCompany 你的組織
腳本路徑 C:\Scripts\Setup.ps1 留著或改路徑;不要執行就刪 <SynchronousCommand Order=1>
DiskID $$VT_WINDOWS_DISK_1ST_NONVTOY$$Ventoy 變數) 保留不動。Ventoy 會在執行期替換成「第一顆非 Ventoy USB 的磁碟」

編輯 ventoy.json 的必改項目:

欄位 原值 要改成
image /Win11.iso USB 上實際的 ISO 路徑(相對 USB 根目錄,開頭要有 /

1. 佈置 Ventoy USB

假設 Ventoy 已刷好(若還沒,從 ventoy.net 下載 Ventoy2Disk 跑一次即可。Ventoy USB 通常有兩個分割區,資料分割區掛上後會是一個大容量 exFAT/NTFS 碟。

把檔案放到 Ventoy 資料分割區:

<Ventoy USB 根目錄>/
├── Win11.iso                         ← 你的 Windows ISO檔名要對上 ventoy.json 的 image
└── ventoy/
    ├── ventoy.json                   ← 本 repo 的 ventoy.json
    └── script/
        └── unattend.xml              ← 本 repo 的 unattend.xml改完的

macOS / Linux 範例:

# 假設 Ventoy 資料分割區掛在 /Volumes/Ventoy
cp Windows.iso        /Volumes/Ventoy/Win11.iso
mkdir -p              /Volumes/Ventoy/ventoy/script
cp ventoy.json        /Volumes/Ventoy/ventoy/ventoy.json
cp unattend.xml       /Volumes/Ventoy/ventoy/script/unattend.xml

不用改名成 autounattend.xml,也不用把 XML 塞進 ISO 根目錄。Ventoy 的 Auto Install plugin 會在開機時依 ventoy.json 把 XML 注入給 Windows Setup。

多個 ISO / 多套範本ventoy.jsonauto_install 是陣列,每個 ISO 一條目;template 也可以是陣列,開機時 Ventoy 會顯示選單讓你挑。

驗證USB 插上目標機開機 → Ventoy 選單選 ISO → 如果 ventoy.json 寫對畫面會出現「Select Auto Install Template」→ 選 unattend.xml


2. 先在 VM 試跑(強烈建議)

跳過這步 = 在真機上賭運氣。最關鍵的是驗證 $$VT_WINDOWS_DISK_1ST_NONVTOY$$ 有沒有挑對磁碟。

最省事:直接把 Ventoy USB 傳入 VM

  • VirtualBox(裝 Extension PackVM 設定 → USB → 加上你的 Ventoy USB開機順序把 USB 放最前。
  • VMware Workstation / FusionVM → Removable Devices → 連接 Ventoy USBBIOS 改開機順序。
  • QEMU-drive file=/dev/diskN,format=raw,if=none,id=usb ...macOS 先 diskutil unmountDisk)。

VM 要 UEFI 開機、建議 ≥ 60 GB 虛擬硬碟(才能看到分割成功)、測試時可先關 Secure Boot。

另一種:用 Ventoy 的 VHD 模式

Ventoy 支援寫進 VHD/VDI可直接掛進 Hyper-V / VirtualBox 當第一顆硬碟,不用實體 USB。細節看 Ventoy 官方文件「Install Ventoy to Local Disk」。

驗證重點

  1. Ventoy 選單正確顯示 ISO
  2. 選了 ISO 後有跳「Auto Install Template」選單
  3. 安裝過程中沒有跳語系或分割畫面
  4. 裝完後看 C:\ 的磁碟編號 — 不是 Ventoy USB 的那顆

3. 跑起來會看到什麼

階段 畫面 時間
WinPE 啟動 Windows 標誌、載入條 3060 秒
磁碟分割 + 映像展開 「正在安裝 Windows」百分比 515 分鐘
第一次重開 黑屏 → 「請稍候」 12 分鐘
OOBE 略過 不該出現任何選單;直接跳過 秒殺
AutoLogon Admin 自動登入到桌面
FirstLogonCommands 閃出 PowerShell 視窗跑 Setup.ps1 看腳本內容
重開機 5 秒倒數後重啟

正常就是全程不需要碰鍵盤滑鼠。 如果中途卡在 OOBE 畫面要你選語系/建帳號 → 去看第 5 節除錯。


4. 部署後善後

第一次自動登入完成後,建議做這三件事:

  1. 刪除殘留的回應檔(含明碼密碼):

    Remove-Item C:\Windows\Panther\unattend.xml -Force -ErrorAction SilentlyContinue
    Remove-Item C:\Windows\Panther\Unattend\unattend.xml -Force -ErrorAction SilentlyContinue
    

    建議加到 Setup.ps1 結尾。

  2. 關掉 AutoLogon(本範本靠 LogonCount=1 會自動失效,驗證一下):

    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon
    
  3. 改密碼:範本密碼 P@ssw0rd! 是給自動化用的,上線前換掉。


5. 除錯:沒跑完或卡住時

看日誌

Windows Setup 把所有 unattend 執行記錄放在:

階段 路徑
WinPE X:\Windows\Panther\setupact.logWinPE 執行期間)
安裝中 C:\Windows\Panther\setupact.log
OOBE/Specialize C:\Windows\Panther\UnattendGC\setupact.log
FirstLogonCommands 錯誤 開 Event Viewer → Windows Logs → Application

Shift + F10 在任何安裝畫面會開出命令提示字元,可以 notepad 看 log。

常見錯誤

現象 原因 解法
Ventoy 沒跳「Auto Install Template」選單 ventoy.jsonimage 路徑對不上 ISO 實際路徑 路徑以 / 開頭、相對 USB 根目錄;或改用 fuzzy / parent 比對
跳了選單但跳過後仍停在選語系畫面 unattend.xml 路徑錯誤或 XML schema 有誤 用 Windows SIM 驗證 XML確認 template 指到的檔案真的存在
磁碟分割失敗或裝到 Ventoy USB 上 DiskID 挑到 Ventoy USB 確認用的是 $$VT_WINDOWS_DISK_1ST_NONVTOY$$,不是硬寫 0;多硬碟環境可改用 $$VT_WINDOWS_DISK_MAX_SIZE$$
磁碟分割失敗(所有硬碟都試過) 目標機是 BIOS/MBR <DiskConfiguration>:拿掉 EFI/MSR用 MBR + System Reserved
ProductKey 錯誤 序號無效 改正確序號、用 KMS 通用金鑰、或刪掉整個 <ProductKey> 節點
OOBE 沒略過 Windows 版本不支援該欄位 比對當前版本 SIM 可用欄位
FirstLogonCommands 沒跑 AutoLogon 沒設或 Order 重複 確認 AutoLogon.Enabled=trueOrder 不重複
Setup.ps1 找不到 路徑不存在 先用其他方式把腳本放到 C:\Scripts\,或改用 FirstLogonCommands 從 USB 複製

驗證 XML 語法

用 Windows SIM 開啟(會 schema-validate或任何支援 XSD 的編輯器。


6. 下一步

  • README.md 了解每個欄位在做什麼
  • SUMMARY.md 了解整體設計脈絡
  • 改完記得 Commit 一份給自己留底