Please visit the IIS hosting documentation for information on how to configure PowerShell Universal as an IIS website.
You can also download the ZIP from our Downloads page if you would like to xcopy deploy the files on Windows or Linux.
Expand-Archive -Path .\Universal.zip -DestinationPath .\Universal sudo apt install unzip unzip Universal.linux-x64.4.2.7.zip -d PSU chmod +x ./PSU/Universal.ServerYou can use the PowerShell Universal PowerShell module to install the Universal server. To install the module, use Install-Module.
If you run this command on Windows, a Windows service will be created and started on your machine. If you run this command on Linux, a systemd service will be created and started. If you run this command on Mac OS, the PowerShell Universal server will be downloaded and extracted.
PowerShell Universal takes full advantage of PowerShell and the PowerShell SDK. It includes PowerShell scripts directly in the product. You will want to consider configuring antivirus to allow for execution of PowerShell scripts in PowerShell Universal.
| Path | Description |
|---|---|
Contains log files and appsettings.json | |
Contains PowerShell scripts and artifacts. Contains the single file database when not using SQL integration. | |
Contains PowerShell Universal application executables, libraries and modules. |
It may be necessary to exclude certain executables that will run PowerShell scripts. The below is a list of executables that will run PowerShell from PowerShell Universal.
| Name | Description |
|---|---|
The PowerShell Universal core service. | |
The PowerShell Universal agent environment executable. | |
Subsystem is not meant to change your default shell, quite the opposite – it defines a command that clients have to explicitly request. (It’s literally a server-side alias.)
So the configuration snippet you found wasn’t meant to change what you get from regular ssh; it’s meant to allow a local PowerShell instance to invoke the SSH client and start a remote PowerShell on the server, without having to know its path (all it needs to specify is the subsystem name).
Specifically, the -sshs option indicates that it’s meant for PSRemoting over SSH using the Enter-PSSession or Invoke-Command cmdlets, which can run via SSH in PowerShell 7.
PS> Enter-PSSession -HostName otherpc
[otherpc] PS>(-HostName option makes it use SSH, whereas -ComputerName makes it use WinRM.)
(This won’t work in PowerShell 5 – its PSRemoting support can only run via WinRM, though if you want PowerShell then WinRM is actually not a bad alternative to SSH.)
Actually changing the default shell in Windows OpenSSH (the official Microsoft builds) is done completely differently – it’s documented on this page:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" ` -Name DefaultShell ` -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" ` -PropertyType String ` -ForceChocolatey Package (Windows)
Chocolatey packages for PowerShell Universal are usually available within a week of release but will not be available the day of a release.
You can install PowerShell Universal using the Chocolatey package. The package runs the MSI install. It will install Universal as a service and open a web browser after the install.
choco install powershelluniversalSee the Docker page.
Installation
Installation instructions for PowerShell Universal.
MSI Install (Windows)
MSI downloads are available on our download page.
| Parameter | Description | Default Value |
|---|---|---|
The installation folder for PowerShell Universal | ||
The TCP port the HTTP server will be listening on. | ||
The repository folder to save the configuration files to. | ||
The LiteDB, SQL, SQLite connection string. | ||
LiteDB, SQL, SQLite | ||
Whether to start the service after install (0 or 1) | ||
The service account password to set for the Windows Service. The password will be masked with ***’s in the installer log. |
Below is an example of how to run msiexec.exe to install PowerShell Universal and provide parameters to the installer.


