> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/get-started.md).

# Get Started

Get started with PowerShell Universal by installing the server, logging in, and creating your first API endpoint, script, and app.

## Install PowerShell Universal

You'll need to install the PowerShell Universal server. [There are a lot of ways to do so,](/powershell-universal/getting-started.md) but you can use the command line below to get started quickly:

{% tabs %}
{% tab title="Windows" %}
You can install PowerShell Universal as a service. Ensure that PowerShell is running as administrator, or the service won't install correctly.

{% code collapsedlinecount="10" %}

```powershell
Install-Module Devolutions.PowerShellUniversal
Install-PSUServer
```

{% endcode %}
{% endtab %}

{% tab title="Linux" %}
You can install PowerShell Universal using the following shell script:

{% code collapsedlinecount="10" %}

```powershell
Install-Module Devolutions.PowerShellUniversal
Install-PSUServer
```

{% endcode %}
{% endtab %}

{% tab title="Mac OS X" %}
You can install PowerShell Universal using the Universal PowerShell module:

{% code collapsedlinecount="10" %}

```powershell
Install-Module Devolutions.PowerShellUniversal
Install-PSUServer -AddToPath
Start-PSUServer -Port 5000
```

{% endcode %}
{% endtab %}

{% tab title="Raspberry PI OS" %}
{% code collapsedlinecount="10" %}

```
wget https://cdn.devolutions.net/download/Devolutions.PowerShellUniversal.linux-arm.2026.3.0.0.zip
unzip Devolutions.PowerShellUniversal.linux-arm.2026.3.0.0.zip -d ./PSU
chmod +x ./PSU/Universal.Server
./PSU/Universal.Server

```

{% endcode %}
{% endtab %}
{% endtabs %}

## Open PowerShell Universal

By default, PowerShell Universal runs on port 5000 of localhost. Open a web browser and navigate to `http://localhost:5000`.

### Login with a Devolutions Account

The first time you navigate to PowerShell Universal, you can login with a [Devolutions account](https://docs.devolutions.net/portal/profile/create-your-devolutions-account) in order to receive a free developer license. This license will enable all features and is intended for non-production workflows.

This Developer License flow is intended for local development and requires local access to the PowerShell Universal host. If users are accessing PSU only from remote browsers through Docker, IIS, or a reverse proxy, they should use one of the standard license paths instead.

### First Run Wizard

Optionally, you can select to run the First Run wizard setup instead of logging in with a Devolutions account and provide a license key.

## Create an API

APIs allow you to call PowerShell scripts over HTTP. Navigate to Build > APIs > Endpoints and select Create Endpoint. Specify a URL, disable Authentication, and select Save.

Select the new endpoint to open its editor, and then enter the following command:

{% code collapsedlinecount="10" %}

```powershell
Get-ComputerInfo
```

{% endcode %}

Save the script and then click the Execute button to test it out.

You can also execute the API via `Invoke-RestMethod`.

{% code collapsedlinecount="10" %}

```powershell
PS C:\Users\adamr> Invoke-RestMethod http://localhost:5000/hello-world

WindowsBuildLabEx                                       : 22000.1.amd64fre.co_release.210604-1628
WindowsCurrentVersion                                   : 6.3
WindowsEditionId                                        : Professional
WindowsInstallationType                                 : Client
WindowsInstallDateFromRegistry                          : 8/6/2021 4:05:12 PM
WindowsProductId                                        : 00330-52452-93139-AAOEM
WindowsProductName                                      : Windows 10 Pro
WindowsRegisteredOrganization                           :
```

{% endcode %}

## Create a Script

To create a script, navigate to Build > Scripts and select Create Script. Enter a name and select Save. PowerShell Universal opens the script editor.

Enter the following script into the editor and save:

{% code collapsedlinecount="10" %}

```powershell
Read-Host "What should I say?"

1..100 | ForEach-Object {
    Write-Progress -PercentComplete $_ -Activity "Processing..."
}

Get-Service
```

{% endcode %}

Once the script is saved, click Run.

## Create an App

To create a new PowerShell-based user interface, navigate to Build > Apps and select Create App. Enter a name and URL for the app.

Select Save, and then select the app name to open its editor. Replace the generated script with the following:

{% code collapsedlinecount="10" %}

```powershell
New-UDApp -Title "Hello, World!" -Content {
    New-UDButton -Text "Click Me" -OnClick {
        Show-UDToast -Message 'Success!!'
    }
}
```

{% endcode %}

Save the app, select Restart, and then select View App. In the app, select Click Me.

Learn more about the various features of PowerShell Universal:

* [APIs](/powershell-universal/api/about.md)
* [Automation](/powershell-universal/automation/about.md)
* [Apps](/powershell-universal/apps/building-dashboards.md)

### See also

* [Devolutions Academy – Installation](https://academy.devolutions.net/student/activity/3465938-installation)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/get-started.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
