Architecture¶
PSWinDeploy is split into three independent layers so that each one can run on the most suitable host.
Overview¶
PSWinDeploy/
├── PSWinDeploy.psd1 Global configuration
├── Modules/
│ ├── Config/ Central config loader
│ ├── WinPE-Builder/ WinPE build (amd64/arm64) — Step 1
│ ├── WIM-Manager/ WIM image management — Step 2
│ ├── TaskSequence/ JSON sequence engine — Step 3
│ ├── DiskSelector/ Console disk assistant (WinPE) — Step 3
│ ├── ProfileManager/ Profiles, autologon, security — Step 4
│ └── Notify/ SMTP + Teams notifications
├── API/
│ └── Deploy-API.ps1 Pode REST server (Windows)
├── Web/ React + Vite front-end (Docker) — Step 5
│ └── Dockerfile
├── Profiles/ Deployment profiles (*.json)
├── Catalogue/
│ └── catalogue.json Available apps and scripts
├── Sequences/
│ └── *.json Deployment sequences
├── Scripts/
│ ├── Start-Deploy.ps1 WinPE entry point
│ └── startnet.cmd
└── docker-compose.yml
The three layers¶
1. Web Interface (Docker / Linux, port 3000)¶
A React + Vite single-page app. It talks to the REST API over HTTP/JSON only — it never touches Windows shares, WIM files, or PowerShell directly. This is what lets it run in a Linux container while the rest of the toolchain lives on Windows.
Pages: profile selection, catalogue, running deployment (live logs), deployment history/logs, sequence editor, settings.
2. REST API (Windows, port 8080)¶
Deploy-API.ps1, built on the Pode PowerShell web framework. It exposes the deployment engine (profiles, catalogue, WIM images, sequences) as JSON endpoints and resolves a runtime sequence from a profile + selected apps.
3. Deployment engine (Windows / WinPE)¶
The actual PowerShell modules that do the work: build the WinPE image, apply the WIM, execute the JSON task sequence (disk partitioning, domain join, updates, software install, custom scripts), manage reboots, and send notifications.
Deployment flow¶
- Operator selects a profile in the web UI, picks optional apps from the catalogue, launches preparation.
POST /api/deploy/prepareresolves the runtime sequence from profile + selected apps.- Target machine boots WinPE (ISO/PXE) →
Start-Deploy.ps1. - WinPE stage:
FormatDisk+ApplyWIM+ autologon setup. - Reboot → first Windows boot (temporary
deploy-tempaccount). - Sequence steps run:
JoinDomain→Updates→Software→ customScripts. - Intermediate reboots are resumed automatically via
RunOnce. - Completion:
Set-LocalAdminPassword+Invoke-DeployCleanup, notification sent.
WinPE architecture support
Since Windows ADK 2004 (build 19041), x86 support has been removed. Only amd64 (x64) and arm64 are supported architectures.