5.2 KiB
5.2 KiB
QUICKSTART — 從零到自動安裝 Windows
照著做一次就能跑出一個「插上 USB → 自動裝完 Windows → 自動登入 → 跑 Setup.ps1 → 重開機」的流程。
預設情境:x64、UEFI+GPT、繁體中文、單一 Disk 0。
0. 事前準備
需要準備:
- Windows 10 或 11 官方 ISO(從 microsoft.com 取得)
- 一支 ≥ 8 GB 的 USB 隨身碟(會被格式化)
- 一台測試機或 VM(強烈建議先在 VM 驗證)
- 本專案的
unattend.xml
編輯 unattend.xml 的必改項目:
| 行為 | 原值 | 要改成 |
|---|---|---|
| 產品序號 | XXXXX-XXXXX-XXXXX-XXXXX-XXXXX |
你的序號,或 KMS 通用金鑰,或整個 <ProductKey> 節點刪掉 |
| 管理員密碼 | P@ssw0rd!(兩處:LocalAccount 與 AutoLogon) |
你的密碼 |
| 組織名 | YourCompany |
你的組織 |
| 腳本路徑 | C:\Scripts\Setup.ps1 |
留著或改路徑;不要執行就刪 <SynchronousCommand Order=1> |
1. 做一支自動安裝 USB
選項 A:Rufus(最快,Windows 原生)
- 下載 Rufus 並開啟
- 選 ISO、選 USB、分割配置選 GPT、目標選 UEFI
- 按「開始」寫入
- 寫入完成後,把
unattend.xml改名為autounattend.xml放到 USB 根目錄
選項 B:macOS / Linux 手動方式
# macOS:找到 USB
diskutil list
# 假設是 /dev/disk4
diskutil eraseDisk MS-DOS "WINUSB" GPT /dev/disk4
# 掛載 ISO 並複製
hdiutil mount Windows.iso
cp -R /Volumes/CCCOMA_X64FRE_ZH-TW_DV9/* /Volumes/WINUSB/
# 放入 autounattend.xml
cp unattend.xml /Volumes/WINUSB/autounattend.xml
Linux 用
wimlib-imagex split處理超過 FAT32 4GB 限制的install.wim。
2. 先在 VM 試跑(強烈建議)
跳過這步 = 在真機上賭運氣。
Hyper-V
New-VM -Name "WinTest" -Generation 2 -MemoryStartupBytes 4GB -NewVHDPath "C:\VM\WinTest.vhdx" -NewVHDSizeBytes 60GB
Set-VMDvdDrive -VMName "WinTest" -Path "C:\ISO\Windows.iso"
Set-VMFirmware -VMName "WinTest" -EnableSecureBoot Off # 測試期間關掉比較省事
Start-VM "WinTest"
把 autounattend.xml 注入 ISO:用 AnyBurn / oscdimg 在 ISO 根目錄加入該檔,或在 VM 掛第二顆 CD。
VirtualBox / VMware
建一台 UEFI 開機的 VM,掛改好的 ISO 開機即可。
3. 跑起來會看到什麼
| 階段 | 畫面 | 時間 |
|---|---|---|
| WinPE 啟動 | Windows 標誌、載入條 | 30–60 秒 |
| 磁碟分割 + 映像展開 | 「正在安裝 Windows」百分比 | 5–15 分鐘 |
| 第一次重開 | 黑屏 → 「請稍候」 | 1–2 分鐘 |
| OOBE 略過 | 不該出現任何選單;直接跳過 | 秒殺 |
| AutoLogon | 以 Admin 自動登入到桌面 |
— |
| FirstLogonCommands | 閃出 PowerShell 視窗跑 Setup.ps1 |
看腳本內容 |
| 重開機 | 5 秒倒數後重啟 | — |
正常就是全程不需要碰鍵盤滑鼠。 如果中途卡在 OOBE 畫面要你選語系/建帳號 → 去看第 5 節除錯。
4. 部署後善後
第一次自動登入完成後,建議做這三件事:
-
刪除殘留的回應檔(含明碼密碼):
Remove-Item C:\Windows\Panther\unattend.xml -Force -ErrorAction SilentlyContinue Remove-Item C:\Windows\Panther\Unattend\unattend.xml -Force -ErrorAction SilentlyContinue建議加到
Setup.ps1結尾。 -
關掉 AutoLogon(本範本靠
LogonCount=1會自動失效,驗證一下):reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon -
改密碼:範本密碼
P@ssw0rd!是給自動化用的,上線前換掉。
5. 除錯:沒跑完或卡住時
看日誌
Windows Setup 把所有 unattend 執行記錄放在:
| 階段 | 路徑 |
|---|---|
| WinPE | X:\Windows\Panther\setupact.log(WinPE 執行期間) |
| 安裝中 | C:\Windows\Panther\setupact.log |
| OOBE/Specialize | C:\Windows\Panther\UnattendGC\setupact.log |
| FirstLogonCommands 錯誤 | 開 Event Viewer → Windows Logs → Application |
Shift + F10 在任何安裝畫面會開出命令提示字元,可以 notepad 看 log。
常見錯誤
| 現象 | 原因 | 解法 |
|---|---|---|
| 停在選語系畫面 | autounattend.xml 沒讀到 |
檔名拼錯/不在根目錄;確認 USB 格式 FAT32 |
| 磁碟分割失敗 | 目標機是 BIOS/MBR | 改 <DiskConfiguration>:拿掉 EFI/MSR,用 MBR + System Reserved |
ProductKey 錯誤 |
序號無效 | 改正確序號、用 KMS 通用金鑰、或刪掉整個 <ProductKey> 節點 |
| OOBE 沒略過 | Windows 版本不支援該欄位 | 比對當前版本 SIM 可用欄位 |
| FirstLogonCommands 沒跑 | AutoLogon 沒設或 Order 重複 |
確認 AutoLogon.Enabled=true 且 Order 不重複 |
Setup.ps1 找不到 |
路徑不存在 | 先用其他方式把腳本放到 C:\Scripts\,或改用 FirstLogonCommands 從 USB 複製 |
驗證 XML 語法
用 Windows SIM 開啟(會 schema-validate),或任何支援 XSD 的編輯器。
6. 下一步
- 讀
README.md了解每個欄位在做什麼 - 看
SUMMARY.md了解整體設計脈絡 - 改完記得 Commit 一份給自己留底