- Bound every installer wait with WaitForExit and a timeout instead of
Start-Process -Wait, which in Windows PowerShell also waits for any
process the installer leaves running and can block forever. This
covers the VirtIO step in the answer files and the guest tools, Mesh
agent and Winget installs in the scripts.
- specialize pass (SYSTEM) sets ConsentPromptBehaviorAdmin=0 so nothing
at first logon can stall on a UAC prompt.
- Step 4 now logs to C:\ProgramData\OOBE\firstlogon.log, saves the
script to C:\ProgramData\OOBE and starts it elevated in its own window.
- Scripts start their transcript before the admin check, so an early
stop still leaves a log.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>