Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/flick9000/winscript/llms.txt

Use this file to discover all available pages before exploring further.

An autounattend.xml file is a Windows answer file that supplies responses to every prompt the Windows Setup wizard would normally ask a user — disk selection, regional settings, account creation, OOBE screens, and more. When placed at the root of a Windows installation USB drive (or embedded in a bootable ISO), the Setup engine reads it automatically before any user interaction is possible, enabling a fully hands-off installation. Winscript’s Unattended Setup generator takes this a step further: it embeds your chosen Winscript PowerShell tweaks directly inside the XML file, so by the time you reach the desktop your system is already optimised, debloated, and configured exactly the way you want it — without touching a single wizard screen.
The autounattend.xml file is generated from the Unattended Setup tab inside the Winscript application. Configure your tweaks first in the main interface, then switch to that tab and click Create to generate and save the file.

What the generated file does

The XML produced by Winscript automates the following behaviours during Windows Setup:
  • Bypasses Windows 11 hardware requirements — injects LabConfig registry entries at the windowsPE phase to skip TPM 2.0, Secure Boot, RAM, CPU, and storage checks, allowing installation on any machine regardless of Microsoft’s minimum-spec enforcement.
  • Skips OOBE screens — sets HideEULAPage, HideWirelessSetupInOOBE, and HideOnlineAccountScreens so the license agreement, Wi-Fi picker, and Microsoft account prompts are never shown.
  • Sets minimal privacy defaultsProtectYourPC is set to 3, which selects the least invasive diagnostics option available at the OOBE stage.
  • Disables the network during the Specialize phase — all network adapters are disabled via Get-NetAdapter | Disable-NetAdapter to prevent Windows Update or telemetry traffic during initial configuration. They are re-enabled automatically at first logon.
  • Disables Windows Update during setupNoAutoUpdate and DisableWindowsUpdateAccess policies are applied at specialize time and removed again at first logon, preventing background downloads from interfering with the setup process.
  • Runs your Winscript PowerShell script automaticallywinscript.ps1 (containing all tweaks you selected in the app) is embedded in the XML and executed during the FirstLogonCommands phase, so your full configuration is applied on the very first boot to the desktop.

Setup phases

The generated XML is structured around the standard Windows unattend pass model. Each pass runs at a distinct point in the installation lifecycle:

windowsPE phase

Runs inside the Windows PE environment before the main installation begins. Winscript uses RunSynchronous commands here to add the LabConfig registry keys that bypass hardware requirement checks. A placeholder product key (00000-00000-00000-00000-00000) is also set with WillShowUI of Always so the installer will always prompt for a valid key if one is not supplied elsewhere.

specialize phase

Runs after the OS files are copied to disk but before the first reboot into the installed system. Winscript uses this phase to:
  1. Extract all embedded scripts from the Extensions block by invoking the inline ExtractScript PowerShell code stored in the XML itself.
  2. Execute Specialize.ps1, which applies pre-OOBE registry tweaks and disables Windows Update.
  3. Disable all network adapters to isolate the machine during the remainder of setup.

oobeSystem phase

Runs during the Out-of-Box Experience. Winscript configures the OOBE element to hide the EULA, Wi-Fi setup, and online account prompts, then registers FirstLogon.ps1 as a FirstLogonCommand so it executes immediately when the new user desktop loads for the first time.

Extensions block

The Extensions element — declared under the custom namespace urn:winscript:unattend — is a Winscript-specific section that is not part of the standard Microsoft unattend schema. It contains:
  • ExtractScript — an inline PowerShell scriptblock that reads the <File> children of Extensions and writes them to disk at the paths specified in each element’s path attribute.
  • <File path="…\winscript.ps1"> — your selected Winscript tweaks, serialised as a PS1 file.
  • <File path="…\Specialize.ps1"> — the specialize-phase configuration script.
  • <File path="…\FirstLogon.ps1"> — the first-logon orchestration script.

Workflow

1

Select your tweaks in Winscript

Open Winscript and choose the debloat, privacy, performance, and miscellaneous options you want applied to your new Windows installation. These selections form the winscript.ps1 that will be embedded in the XML.
2

Configure OOBE options

Switch to the Unattended Setup tab in Winscript. Review the OOBE settings — EULA page, Wi-Fi setup, online account screens, and privacy defaults are all pre-configured, but you can adjust them before generating the file.
3

Generate autounattend.xml

Click Create. Winscript serialises your current selections into a complete autounattend.xml file and opens a save dialog so you can choose where to store it.
4

Place the file on your installation media

Copy autounattend.xml to the root of a Windows installation USB drive (the same level as the setup.exe file). The Windows Setup engine automatically detects answer files at this location.
5

Boot and install Windows

Boot the target machine from the USB drive. Windows Setup reads the answer file immediately and proceeds without any manual input — hardware checks are bypassed, OOBE prompts are skipped, and your Winscript configuration runs automatically on the first boot to the desktop.

Build docs developers (and LLMs) love