Skip to content

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)

  1. The operator picks a profile in the web interface, selects optional applications, and starts preparation.
  2. The target machine boots into WinPE (ISO or PXE).
  3. Start-Deploy.ps1 runs: disk and WIM image selection assistant.
  4. The sequence executes: partitioning → apply WIM → drivers → locale → domain join → updates → software → scripts.
  5. Intermediate reboots are handled automatically via a RunOnce registry key + a state file.
  6. 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