PSWinDeploy¶
PSWinDeploy is a modern Windows deployment tool written entirely in PowerShell, designed as a replacement for MDT (Microsoft Deployment Toolkit).
It is built in three layers:
┌─────────────────────────────────────────────────────┐
│ Web Interface (Docker / Linux — port 3000) │
│ React + Vite — profiles, catalogue, logs │
└───────────────────────┬───────────────────────────────┘
│ HTTP/JSON
┌───────────────────────▼───────────────────────────────┐
│ REST API (Windows — port 8080) │
│ Deploy-API.ps1 via Pode │
└───────────────────────┬───────────────────────────────┘
│ PowerShell modules
┌───────────────────────▼───────────────────────────────┐
│ Deployment engine (Windows / WinPE) │
│ WinPE-Builder · WIM-Manager · TaskSequence │
│ ProfileManager · DiskSelector · Notify │
└─────────────────────────────────────────────────────────┘
Deployment flow (summary)¶
- The operator picks a profile in the web interface, selects optional applications, and starts preparation.
- The target machine boots into WinPE (ISO or PXE).
Start-Deploy.ps1runs: disk and WIM image selection assistant.- The sequence executes: partitioning → apply WIM → drivers → locale → domain join → updates → software → scripts.
- Intermediate reboots are handled automatically via a
RunOnceregistry key + a state file. - At the end: local admin password is set, the temporary account is removed, a notification is sent.
Why PSWinDeploy?¶
- Pure PowerShell, no MDT/WDS dependency for the deployment logic itself.
- JSON-driven task sequences, easy to version and diff.
- REST API so any front-end (or automation) can drive a deployment.
- A ready-made web UI, deployable independently on Linux via Docker.
- Built-in secrets vault, notifications (mail & Teams), and a visual sequence editor.
Where to start¶
- Architecture — how the three layers talk to each other.
- Installation — prerequisites and setup, step by step.
- First Deployment — a full walkthrough, end to end.