Open-source Windows 11 deployment automation toolkit built with PowerShell 7
Zero-touch Windows deployment with automatic driver updates, application installation, bloatware removal, and system configuration. Deploy via USB, network, RMM agents, or AutoUnattend.xml.
Choose how you want to deploy WinDeploy — pick the path that fits your environment.
| Local USB / AutoUnattend.xml | Intune / Autopilot |
|---|---|
Deploy locally via USB, autounattend.xml, or one-liner script. |
Deploy via Intune Autopilot, targeting specific user groups. |
Prerequisites: Windows 11 Pro 24H2+, PowerShell 7, internet connection
- Create bootable Windows 11 USB
- Copy autounattend.xml to USB root
- (Optional) Copy RMM agent as Agent.exe to USB root
- Boot from USB with network connected. Make sure to keep the USB drive connected until deployment is complete.
- Wait - everything happens automatically
# Run as Administrator in PowerShell 7
iex (irm "https://raw.githubusercontent.com/Stensel8/WinDeploy/$((irm https://api.github.com/repos/Stensel8/WinDeploy/releases/latest).tag_name)/Scripts/Start.ps1")# Run as Administrator in PowerShell 7
iex (irm windeploy.stensel.nl)graph TD
A[Start.ps1] --> B{Admin Rights?}
B -->|No| C[Auto-Elevate]
C --> D{PowerShell 7?}
B -->|Yes| D
D -->|No| E[Install PS7 + WinGet]
E --> F[Relaunch in PS7]
D -->|Yes| G[Download Deploy.ps1]
F --> G
G --> H[Launch Deploy.ps1]
H --> I[Install RMM Agent]
I --> J[Update Drivers]
J --> K[Windows Hardening]
K --> L[Install Applications]
L --> M[Remove Bloatware]
M --> N[Apply Theme]
N --> O[Set Hostname]
O --> P[Install Windows Updates]
P --> Q[Complete]
Start.ps1 is the main entry point that ensures the system has PowerShell 7 and WinGet installed, handles elevation, and downloads/launchs Deploy.ps1. Deploy.ps1 orchestrates the actual deployment by downloading and executing each script in sequence.
Edit Scripts/Deployment/Install-Applications.ps1 (lines 20-30):
$Applications = @(
"Microsoft.VCRedist.2015+.x64",
"Microsoft.Office",
"Microsoft.Teams",
# Add your apps here
)Edit Scripts/Deployment/Remove-Bloat.ps1 (lines 15-40):
$BloatwareList = @(
"Microsoft.BingNews",
"Microsoft.GamingApp",
# Add packages to remove
)The deployment supports automatic RMM/monitoring agent installation from USB:
- Place your agent installer as
Agent.exe(or any*agent*.exe) on the USB drive root. - The script will automatically detect and install it silently during deployment.
This approach works with any RMM solution that supports silent installation (e.g., /S switch).
- Dell: Latitude, OptiPlex, Precision, XPS series
- HP: EliteBook, ProBook, EliteDesk, ProDesk, ZBook series
To view all models, check Supported Dell devices or Supported HP devices.
All operations are logged:
- Main log:
C:\WinDeploy\Logs\Start.log - Individual scripts:
C:\WinDeploy\Logs\*.log(e.g., Install-Drivers.log)
View logs in real-time:
Get-Content "C:\WinDeploy\Logs\Start.log" -Wait -Tail 20WinDeploy automatically installs and manages the following dependencies:
- winget-install (v5.2.1+) - PowerShell script for reliable WinGet installation by asheroto
- PSWindowsUpdate (v2.2.1.5+) - PowerShell module for Windows Update automation
- Windows Package Manager (WinGet) (v1.12.350+) - Installed via
winget-installscript - Dell Command Update (v5.5.0+) - Auto-installed for supported Dell devices
- HP Image Assistant (v5.3.2+) - Auto-installed for supported HP devices
Note: All dependencies are automatically detected and installed during deployment. No manual installation required.
Script won't run due to execution policy error
Set-ExecutionPolicy Bypass # Allows the script to run for the current sessionWindows Spotlight not working after deployment
If Windows Spotlight is disabled after running the deployment, run the Fix-Spotlight.ps1 script to re-enable it:
# Run as Administrator
& "C:\WinDeploy\Download\Fix-Spotlight.ps1"This script sets the necessary registry keys and restarts Explorer. Then, set the lock screen background to "Windows Spotlight" in Settings > Personalization > Lock screen.
WinGet not found
Install WinGet using the winget-install script from PowerShell Gallery (by AsherToto) Open PowerShell as Administrator and run:
Install-Script winget-install -ForceFollow the prompts to complete the installation (tap A to accept all or Y individually). Note: -Force is optional but recommended to update if outdated.
Usage:
winget-installIf WinGet is already installed, use -Force to run anyway. The script is published on PowerShell Gallery under winget-install.
Drivers not installing
- Check if your device is supported: See Docs/SupportedDellDevices.json or Docs/SupportedHPDevices.json.
- Ensure you have an internet connection.
- Review the logs:
C:\WinDeploy\Logs\Install-Drivers.log.
Applications failing to install
- Confirm WinGet is working: Run
winget --version. - Verify app IDs: Use
winget search <app-name>to find the correct ID. - Check the logs:
C:\WinDeploy\Logs\Install-Applications.log.
Sometimes, app installations fail because WinGet has issues with certain packages. Many apps have both a standard version and a Microsoft Store (msstore) version. If the default ID doesn't work, try the msstore version.
To find the msstore App ID:
- Run
winget search <app-name>in PowerShell. - Look for entries where the "Source" column shows "Microsoft Store".
- Or, go to apps.microsoft.com, search for the app, and copy the App ID from the URL.
For examples, see the images below:
- PowerShell - Microsoft's scripting language
- WinGet - Windows Package Manager
- PSWindowsUpdate - Windows Update automation module
- winget-install - WinGet installation script by asheroto
- Dell Command Update - Dell driver management
- HP Image Assistant - HP driver management
- HP CMSL - HP Client Management Script Library
We welcome contributions! See CONTRIBUTING.md for guidelines.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Pull Requests: Always welcome!
This software is provided "as is" without warranty of any kind. Always test deployments in a safe environment before production use. The authors are not responsible for any damage or data loss.



