Skip to main content

Windmill vs PowerShell Universal

PowerShell Universal is a commercial platform built by Ironman Software and acquired by Devolutions in October 2025. In its own words, it "centralizes script management, letting you build REST APIs, automate PowerShell jobs, and create interactive web apps from one console". Windmill is an open-source, self-hostable platform for scripts, workflows and internal apps, where PowerShell is one of many supported languages.

This page is written by Windmill. Statements about PowerShell Universal come from its public documentation and link to it. Feel free to contact us for any correction.

Who each tool is for​

PowerShell Universal is built around PowerShell. Scripts, REST endpoints and apps are all written in PowerShell: an endpoint is defined with New-PSUEndpoint and a script block, and an app with New-UDApp. It fits teams whose automation estate is PowerShell and who want one server to run scripts, expose them as APIs and give end users a portal.

Windmill fits teams that run PowerShell next to other languages. A PowerShell script sits in the same workspace as scripts in Python, TypeScript, SQL, C# and other languages, and any of them can be a step in a flow, the backend of an app, or a job behind a webhook or schedule.

Comparison​

PowerShell UniversalWindmill
Source modelCommercial. Many features are free; others, such as Git integration, SQL Server and PostgreSQL persistence and enterprise authentication, require a license. A free developer license covers non-production workloads.Open source. The Community Edition is free to self-host; features marked Enterprise in the docs need an Enterprise license. Paid plans are priced by seats and compute units.
LanguagesPowerShell 7 and Windows PowerShell 5.1. A Custom environment starts an executable you specify; the docs give python as an example.TypeScript, Python, Go, PHP, Bash, PowerShell, Nu, C#, SQL, Java, Ruby, R, Rust and more.
Where the server runsWindows, Linux and macOS; also Docker, IIS, a Windows service and Azure.Docker Compose or Kubernetes with the Helm chart, backed by PostgreSQL, or Windmill Cloud.
Where jobs runIn an environment configured on the server: inside the server process, a PowerShell 7 or Windows PowerShell 5.1 host, or a custom executable. Devolutions Agent runs jobs on remote Windows machines or in a Linux container, targeted by queue or by computer group.On workers, scaled horizontally. Linux workers by default; native Windows workers (Self-Hosted Enterprise) run Python, Bun, PowerShell 7, C#, Nu, Java, Ruby and R without Docker or WSL.
DatabaseSQLite (recommended only for small instances or testing), SQL Server or PostgreSQL.PostgreSQL.
SchedulingCRON expressions (Cronos library), simple intervals, one-time and continuous schedules.CRON schedules for scripts and flows, with error and recovery handlers.
Event triggersTriggers on platform events, such as a job finishing or a user logging in (licensed).Webhooks, custom HTTP routes and email triggers (100 emails a day on Community Edition). Kafka, NATS, SQS, Google Cloud Pub/Sub and Azure Event Grid triggers are self-hosted Enterprise features.
APIsHTTP endpoints defined by URI and method, each running a PowerShell script block.Every script and flow gets webhooks; custom HTTP routes map paths to scripts and flows.
Multi-step workflowsWorkflows are listed among licensed automation features.Flow editor with branches, for loops, retries, error handlers and approval steps.
User interfacesAutomatic forms from script parameters; apps written in PowerShell; portal pages with widgets.Auto-generated UIs from script parameters; full-code apps in React or Svelte; a low-code app editor (legacy).
User loginWindows Authentication (Kerberos or NTLM), OpenID Connect, SAML2, WS-Federation, client certificates (all licensed).SSO through Microsoft Entra ID, Google, Okta and other providers (limited to 10 SSO users without Enterprise Edition); SAML and SCIM on Enterprise Edition.
SecretsDatabase vault, Windows Credential Manager, a SecretStore file vault, Azure Key Vault registration (non-database vaults are licensed).Encrypted secrets in the database; on Enterprise Edition, HashiCorp Vault or Azure Key Vault as the secret backend.
GitSynchronizes configuration scripts with a remote repository, both ways by default (licensed).Git sync pushes a commit for each deployment and can deploy commits back into the workspace (Enterprise); Azure DevOps through an Entra service principal. Free on Community Edition for up to 2 users.
High availabilitySeveral nodes behind a load balancer sharing a SQL Server or PostgreSQL database.Stateless servers and workers sharing PostgreSQL; add workers to scale.

Where PowerShell Universal is the better choice​

  • Everything is PowerShell. If your scripts, APIs and user interfaces are all PowerShell and the team wants to stay in one language, PowerShell Universal is designed for that, down to apps built with PowerShell cmdlets.
  • Windows PowerShell 5.1. PowerShell Universal offers a Windows PowerShell 5.1 environment. Windmill's Windows worker setup uses PowerShell 7 (pwsh.exe).
  • A single Windows server. PowerShell Universal documents hosting as a Windows service or in IIS. Windmill's self-hosting guide deploys the server with Docker Compose or Kubernetes, and Windows machines join as workers.
  • Windows Authentication for users. PowerShell Universal documents Kerberos/NTLM sign-in for users. Windmill signs users in through SSO providers such as Microsoft Entra ID, or SAML on Enterprise Edition.

Where Windmill is the better choice​

  • More than one language. PowerShell steps can sit next to Python, TypeScript, SQL or C# steps in the same flow, with dependencies resolved from the imports of each script, including PowerShell modules.
  • Workflows with people in the loop. Approval steps, retries, error handlers, branches and for loops are built into the flow editor.
  • Frontends in React or Svelte. Full-code apps call the same scripts and flows as their backend.
  • One queue for Windows and Linux, in any language. Windows and Linux workers pull from the same Windmill job queue, and worker tags route each step, in PowerShell, Python, C# or another language, to the machines that can run it.
  • Open source. The Community Edition is free to self-host, and the source is on GitHub.

Using them together​

  • Call PowerShell Universal APIs from Windmill. PowerShell Universal endpoints are HTTP endpoints, so a Windmill script, in PowerShell or any other language, can call them as a step in a flow, on a schedule or from an app.
  • Start Windmill from PowerShell Universal. Each Windmill script and flow has webhooks, so a PowerShell Universal script can start a Windmill flow with a single HTTP request.
  • Move scripts gradually. Windmill reads arguments from a PowerShell script's param block and generates a form from it, so an existing script can be moved one at a time while the rest stay where they are.

Getting started​