Skip to content

Stensel8/WinDeploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WinDeploy - Windows Deployment Automation

Open-source Windows 11 deployment automation toolkit built with PowerShell 7

License: MIT PowerShell 7.0+ Windows 11

Zero-touch Windows deployment with automatic driver updates, application installation, bloatware removal, and system configuration. Deploy via USB, network, RMM agents, or AutoUnattend.xml.

Terminal showing successful deployment with green checkmarks


Quick Start

Prerequisites: Windows 11 Pro 24H2+, PowerShell 7, internet connection

Option 1: USB Deployment (Fresh installs)

# 1. Create bootable Windows 11 USB
# 2. Copy autounattend.xml to USB root
# 3. (Optional) Copy RMM agent as Agent.exe to USB root
# 4. Boot from USB with network connected
# 5. Wait - everything happens automatically

Option 2: Direct Execution (Existing or fresh installs)

# Run as Administrator in PowerShell 7
iex "& { $(irm 'https://raw.githubusercontent.com/Stensel8/WinDeploy/main/Scripts/Start.ps1') }"

Project Structure

WinDeploy/
├── Scripts/
│   ├── Start.ps1                    # Main entry point with auto-elevation
│   ├── Deploy-Device.ps1            # Full deployment orchestrator
│   ├── Install-Drivers.ps1          # Dell/HP driver automation
│   ├── Install-Applications.ps1     # WinGet app installer
│   ├── Install-WindowsUpdates.ps1   # Windows Update automation
│   ├── Remove-Bloat.ps1             # Bloatware removal
│   ├── Get-IntuneHash.ps1           # Autopilot hash generator
│   ├── Set-Theme.ps1                # Desktop theme configuration
│   └── Utilities/                   # Shared modules
│       ├── Logging.psm1             # Logging framework
│       ├── WinGet.psm1              # WinGet wrapper functions
│       ├── System.psm1              # System utilities
│       └── Download.psm1            # Download helpers
├── Docs/
│   ├── SupportedDellDevices.json    # Dell device compatibility list
│   └── SupportedHPDevices.json      # HP device compatibility list
├── Config/                          # (Future) Configuration files
└── README.md

How It Works

Deployment Flow

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[Deploy-Device.ps1]
    F --> G
    G --> H[Install RMM Agent]
    H --> I[Update Drivers]
    I --> J[Install Applications]
    J --> K[Remove Bloatware]
    K --> L[Generate Intune Hash]
    L --> M[Apply Theme]
    M --> N[Install Windows Updates]
    N --> O[Complete]
Loading

Configuration

Customize Application List

Edit Scripts/Install-Applications.ps1 (lines 80-100):

$applications = @(
    @{ Id = "Microsoft.VisualStudioCode"; Name = "VS Code" },
    @{ Id = "Google.Chrome"; Name = "Chrome" },
    # Add your apps here
)

Customize Bloatware List

Edit Scripts/Remove-Bloat.ps1 (lines 50-75):

$bloatwareList = @(
    "Microsoft.BingNews",
    "Microsoft.GamingApp",
    # Add packages to remove
)

Supported Devices (Drivers)

  • 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.


Logging

All operations are logged with timestamps:

  • Main log: C:\WinDeploy\Logs\Deploy-Device.log
  • Individual scripts: C:\WinDeploy\Logs\Install-*.log
  • Bootstrap log: C:\WinDeploy\Logs\Start-Bootstrap.log

View logs in real-time:

Get-Content "C:\WinDeploy\Logs\Deploy-Device.log" -Wait -Tail 20

Used Dependencies

  • WinGet: v1.11.510 or later (auto-installed if missing)
  • PSWindowsUpdate: 2.2.1.5 or later (auto-installed for Windows Updates)
  • Dell Command Update: 5.5.0 or later (auto-installed for Dell devices)
  • HP Image Assistant: 5.3.2 or later (auto-installed for HP devices)

Troubleshooting

Common Issues...

Script won't run - execution policy error

Set-ExecutionPolicy Bypass # This will allow the script to run for this session

WinGet not found

# Run Install-Winget.ps1 first
.\Scripts\Install-Winget.ps1

Drivers not installing

Applications failing to install

  • Verify WinGet is functional: winget --version
  • Check app IDs: winget search <app-name>
  • Review logs: C:\WinDeploy\Logs\Install-Applications.log

Credits & Acknowledgments

Built With


Support & Community


Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Disclaimer

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.