新增 Setup.ps1(13 段 post-install);FirstLogonCommands 改從 Ventoy USB 拷腳本
把分散在 unattend.xml inline 的網路相依步驟(OpenSSH/Telegram/RemoveAI)和 新加入的 10 個 post-install 動作整合進獨立的 Setup.ps1,由 FirstLogonCommands Order 4 從 Ventoy USB(/ventoy/script/Setup.ps1)掃磁碟複製到 C:\Scripts\, Order 5 執行。腳本分兩 phase: Phase 1(不需網路):SSH 22 防火牆、RDP+3389、ICMP Echo、WinRM TrustedHosts=*、 移 OneDrive、關 Cortana/WebSearch、套 UI/IME 預設到 Default profile、user→User 改名 + 從登入畫面隱藏 Admin。 Phase 2(要網路,wait-network 後):OpenSSH Server FoD、KMS 啟用(先試 $InternalKmsServers 後 fallback 公開 KMS)、winget Chrome、RemoveWindowsAI、 Win11Debloat、22 個 UWP 移除、Telegram、刪 Panther 殘留。 每段以 Section 包裝寫獨立 START/DONE/ERR 到 C:\Windows\Temp\setup.log,方便逐段 重跑與排查。 文件全部同步:DEPLOY/QUICKSTART/SUMMARY/README/CLAUDE 都加上 Setup.ps1 的 USB 部署、cp 步驟、Order 表、排查指引。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,18 +13,25 @@
|
||||
- [ ] Windows 10 或 11 官方 ISO(從 [microsoft.com](https://www.microsoft.com/software-download) 取得)
|
||||
- [ ] 已刷好 Ventoy 的 USB 隨身碟(≥ 16 GB 建議,因為會同時放 ISO 與 script)
|
||||
- [ ] 一台測試機或 VM(強烈建議先在 VM 驗證)
|
||||
- [ ] 本專案的 `unattend.xml` 與 `ventoy.json`
|
||||
- [ ] 本專案的 `unattend.xml`、`Setup.ps1`、`ventoy.json`
|
||||
|
||||
**編輯 `unattend.xml` 的必改項目:**
|
||||
|
||||
| 行為 | 原值 | 要改成 |
|
||||
|---|---|---|
|
||||
| 產品序號 | `XXXXX-XXXXX-XXXXX-XXXXX-XXXXX` | 你的序號,或 KMS 通用金鑰,或整個 `<ProductKey>` 節點刪掉 |
|
||||
| 產品序號 | Win11/10 Pro GVLK(`W269N-WFGWX-...`) | 你的序號,或留 GVLK 用 KMS,或整個 `<ProductKey>` 節點刪掉 |
|
||||
| 管理員密碼 | `P@ssw0rd!`(兩處:`LocalAccount` 與 `AutoLogon`) | 你的密碼 |
|
||||
| 組織名 | `YourCompany` | 你的組織 |
|
||||
| 腳本路徑 | `C:\Scripts\Setup.ps1` | 留著或改路徑;不要執行就刪 `<SynchronousCommand Order=1>` |
|
||||
| `DiskID` | `$$VT_WINDOWS_DISK_1ST_NONVTOY$$`(Ventoy 變數) | **保留不動**。Ventoy 會在執行期替換成「第一顆非 Ventoy USB 的磁碟」 |
|
||||
|
||||
**編輯 `Setup.ps1` 的常改項目(在檔案頂部):**
|
||||
|
||||
| 變數 | 預設 | 要改成 |
|
||||
|---|---|---|
|
||||
| `$InternalKmsServers` | `@()` 空陣列 | 你內網 KMS 主機,例:`@('kms.your-corp.com')`;空陣列就 fallback 到公開 KMS |
|
||||
| `$UwpRemoveList` | 22 個 Microsoft 預載 app | 想多移/少移就改這個陣列 |
|
||||
| `$Win11DebloatConfigJson` | toolkit 的預設(暗色、工作列靠左、停 Bing/Copilot/Recall…) | 不喜歡哪個 tweak 就把該行 `Value` 改成 `false` |
|
||||
|
||||
**編輯 `ventoy.json` 的必改項目:**
|
||||
|
||||
| 欄位 | 原值 | 要改成 |
|
||||
@@ -45,7 +52,8 @@
|
||||
└── ventoy/
|
||||
├── ventoy.json ← 本 repo 的 ventoy.json
|
||||
└── script/
|
||||
└── unattend.xml ← 本 repo 的 unattend.xml(改完的)
|
||||
├── unattend.xml ← 本 repo 的 unattend.xml(改完的)
|
||||
└── Setup.ps1 ← 本 repo 的 Setup.ps1(首次登入會被自動複製到 C:\Scripts\)
|
||||
```
|
||||
|
||||
macOS / Linux 範例:
|
||||
@@ -56,8 +64,11 @@ 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
|
||||
cp Setup.ps1 /Volumes/Ventoy/ventoy/script/Setup.ps1
|
||||
```
|
||||
|
||||
> **改 `Setup.ps1` 後記得重 `cp`**。`unattend.xml` 的 FirstLogonCommands 從 USB 上的 `/ventoy/script/Setup.ps1` 抓檔案,不是從 repo。沒同步的話部署到的 Windows 會跑舊版。
|
||||
|
||||
> 不用改名成 `autounattend.xml`,也不用把 XML 塞進 ISO 根目錄。Ventoy 的 Auto Install plugin 會在開機時依 `ventoy.json` 把 XML 注入給 Windows Setup。
|
||||
|
||||
**多個 ISO / 多套範本**:`ventoy.json` 的 `auto_install` 是陣列,每個 ISO 一條目;`template` 也可以是陣列,開機時 Ventoy 會顯示選單讓你挑。
|
||||
@@ -102,9 +113,9 @@ Ventoy 支援寫進 VHD/VDI,可直接掛進 Hyper-V / VirtualBox 當第一顆
|
||||
| 第一次重開 | 黑屏 → 「請稍候」 | 1–2 分鐘 |
|
||||
| OOBE 略過 | **不該出現任何選單**;直接跳過 | 秒殺 |
|
||||
| AutoLogon | 以 `Admin` 自動登入到桌面(顯示名稱是「Administrator」) | — |
|
||||
| FirstLogonCommands | 閃過一連串 PowerShell / cmd 黑視窗(`Setup.ps1`、建 user 帳號、裝 OpenSSH、裝 Telegram) | 1–3 分鐘(含 FoD 下載) |
|
||||
| FirstLogonCommands | 閃過一連串 PowerShell / cmd 黑視窗(密碼永不過期、改主機名、建 user 帳號、從 USB 拷 Setup.ps1、跑 Setup.ps1 的 13 段 post-install) | 5–15 分鐘(含 FoD 下載、Win11Debloat 解壓、winget Chrome、AI 元件移除) |
|
||||
| 重開機 | 5 秒倒數後重啟 | — |
|
||||
| 第二次開機 | 看到登入畫面,有 `Administrator`(= `Admin` 帳號)和 `user` 兩個選項 | — |
|
||||
| 第二次開機 | 看到登入畫面,有 `User` 一個選項(`Admin` 已被 SpecialAccounts 隱藏;輸入帳號名仍可登入) | — |
|
||||
|
||||
**正常就是全程不需要碰鍵盤滑鼠。** 如果中途卡在 OOBE 畫面要你選語系/建帳號 → 去看第 5 節除錯。
|
||||
|
||||
@@ -126,14 +137,23 @@ Ventoy 支援寫進 VHD/VDI,可直接掛進 Hyper-V / VirtualBox 當第一顆
|
||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon
|
||||
```
|
||||
|
||||
3. **改密碼**:範本的 `Admin/P@ssw0rd!` 和 `user/1234` 都是給自動化用的,上線前換掉。`user` 登入時會被強制改密,`Admin` 要自己 `net user Admin *` 改。
|
||||
3. **改密碼**:範本的 `Admin/P@ssw0rd!` 和 `User/1234` 都是給自動化用的,上線前換掉。`User` 登入時會被強制改密,`Admin` 要自己 `net user Admin *` 改。
|
||||
|
||||
4. **看一下 FirstLogon log**(本輪新增):
|
||||
4. **看一下 FirstLogon / Setup log**:
|
||||
```powershell
|
||||
notepad C:\Windows\Temp\firstlogon-sshd.log # OpenSSH 安裝結果
|
||||
notepad C:\Windows\Temp\firstlogon-telegram.log # Telegram 下載與安裝結果
|
||||
notepad C:\Windows\Temp\firstlogon-copysetup.log # Order 4:Setup.ps1 是否從 Ventoy USB 複製成功
|
||||
notepad C:\Windows\Temp\firstlogon-runsetup.log # Order 5:Setup.ps1 找不到才會有此檔
|
||||
notepad C:\Windows\Temp\setup.log # Setup.ps1 主 log,13 段每段都寫 START/DONE/ERR
|
||||
```
|
||||
找 `=== <name> ERR: ... ===` 行就是失敗段;`Setup.ps1` 每段都冪等,可以登入 `Admin` 後 `powershell -ExecutionPolicy Bypass -File C:\Scripts\Setup.ps1` 整支重跑,或挑特定段貼進視窗。
|
||||
|
||||
5. **驗證遠端管理可用**(從別台機器試):
|
||||
```bash
|
||||
ping <機器 IP> # ICMP 應該回應
|
||||
ssh Admin@<機器 IP> # OpenSSH 22/TCP,密碼 P@ssw0rd!(金鑰要先放 administrators_authorized_keys)
|
||||
# RDP:用任何 RDP client 連 <機器 IP>:3389
|
||||
# WinRM:5985(HTTP,AllowUnencrypted=true,TrustedHosts=*)
|
||||
```
|
||||
`Exit 0` 才是真的成功。前一輪 Telegram 無聲失敗就是因為當時沒有 log、無從判斷。
|
||||
|
||||
---
|
||||
|
||||
@@ -163,7 +183,8 @@ Shift + F10 在任何安裝畫面會開出命令提示字元,可以 `notepad`
|
||||
| `ProductKey` 錯誤 | 序號無效 | 改正確序號、用 KMS 通用金鑰、或刪掉整個 `<ProductKey>` 節點 |
|
||||
| OOBE 沒略過 | Windows 版本不支援該欄位 | 比對當前版本 SIM 可用欄位 |
|
||||
| FirstLogonCommands 沒跑 | `AutoLogon` 沒設或 `Order` 重複 | 確認 `AutoLogon.Enabled=true` 且 `Order` 不重複 |
|
||||
| `Setup.ps1` 找不到 | 路徑不存在 | 先用其他方式把腳本放到 `C:\Scripts\`,或改用 `FirstLogonCommands` 從 USB 複製 |
|
||||
| `Setup.ps1` 找不到(`firstlogon-copysetup.log` 寫 `NOT FOUND`) | Ventoy USB 太早被拔掉,或 `Setup.ps1` 沒 cp 到 `/ventoy/script/` | 等到第二次重開機進登入畫面後才拔;或重新 `cp Setup.ps1 /Volumes/Ventoy/ventoy/script/` |
|
||||
| `Setup.ps1` 跑了但某段 ERR | 看 `C:\Windows\Temp\setup.log` 的 `=== <name> ERR: ... ===` | 修一修對應段,登入 `Admin` 後 `powershell -ExecutionPolicy Bypass -File C:\Scripts\Setup.ps1` 整支重跑 |
|
||||
|
||||
### 驗證 XML 語法
|
||||
|
||||
|
||||
Reference in New Issue
Block a user