For the complete documentation index, see llms.txt. This page is also available as Markdown.

Repository

Information about the PowerShell Universal repository.

The configuration data for PowerShell Universal is primarily stored within the repository. By default, the repository folder can be found in %ProgramData%\UniversalAutomation\Repository. You can adjust the location of the repository by editing the appsettings.json file.

The repository contains PowerShell scripts and XML files that are produced when using the PowerShell Universal admin console. The repository folder is also watched for changes so any change made on disk will cause the system to reload the file and reconfigure the platform. When using Git integration, the repository folder is what is synchronized with the git remote.

All configuration cmdlets are part of the Universal module.

What's Stored in the Repository

Files stored in the repository are stored as plain text to allow for easy differencing with source control tools.

  • Authentication

  • AI Agents and Tools

  • Apps

  • Endpoints

  • Environments

  • Licenses

  • Login Pages

  • Pages

  • Published Folders

  • Rate Limits

  • Roles

  • Schedules

  • Scripts

  • Settings

  • Tags

  • Triggers

  • Vaults

What's Not Stored in the Repository

These entities are stored within the PowerShell Universal database.

  • App Tokens

  • Identities

  • Job History

Editing the Repository

You can edit the repository files directly in the admin console by navigating to Settings \ Files. The editor allows you to create files and folders and edit any file within the repository directory.

You can also edit the repository directly on disk using editors like Visual Studio Code. By default, files are stored in %ProgramData%\UniversalAutomation\Repository. You will need either enable auto reload or resolve changes manually. You can view changed files by navigation to Settings \ Files \ Configuration Tracker.

Configuration Scripts

Authentication.ps1

Stored in .universal\authentication.ps1

This script is responsible for configuring forms authentication. If forms authentication is not being used, this file is ignored.

You can use the Set-PSUAuthentication cmdlet in this file.

AiAgents.ps1

Stored in .universal\aiAgents.ps1

This script is responsible for configuration AI Agents. Use the New-PSUAIAgents cmdlet in this file.

AiTools.ps1

Stored in .universal\aiTools.ps1

This script is responsible for configuration AI Tools. Use the New-PSUAITool cmdlet in this file.

Branding.ps1

Stored in .universal\branding.ps1

This script is responsible for configuring branding settings.

You can use the New-PSUBranding cmdlet in this file.

Dashboards.ps1

Stored in .universal\dashboards.ps1

This script is responsible for registering PS1 files are apps within the system. Each command contains the meta-data for the app including name, base URL, and environment.

You can use the New-PSUApp cmdlet in this file.

Endpoints.ps1

Stored in .universal\endpoints.ps1

This script is responsible for defining all the API endpoints within the PowerShell Universal instance.

You can use the New-PSUEndpoint cmdlet in this file.

Environments.ps1

Stored in .universal\environments.ps1

This script is responsible for defining all the environments within PowerShell Universal.

You can use the New-PSUEnvironment cmdlet in this file.

healthChecks.ps1

Stored in .universal\healthChecks.ps1

This script is responsible for defining Health Checks within PowerShell Universal.

You can use the New-PSUHealthCheck cmdlet in this file.

Licenses.ps1

Stored in .universal\licenses.ps1

This script is responsible for defining the license used in PowerShell Universal.

You can use the Set-PSULicense cmdlet in this file.

Initialize.ps1

Stored in .universal\initialize.ps1

This script runs before any configuration is done within PowerShell Universal. The server is running but none of the services have started. This is useful for install modules or configuring secret vaults before discovery of those resources are started.

Middleware.ps1

Stored in .universal\middleware.ps1

Allows for customization of the HTTP requests in PowerShell Universal.

PublishedFolders.ps1

Stored in .universal\publishedFolders.ps1

This script is responsible for configuring published folders.

You can use the New-PSUPublishedFolder cmdlet in this file.

RateLimits.ps1

Stored in .universal\rateLimits.ps1

This script is responsible for configuring rate limits.

You can use the New-PSURateLimit cmdlet in this file.

Roles.ps1

Stored in .universal\roles.ps1

This script is responsible for configuring roles.

You can use the New-PSURole cmdlet in this file.

Schedules.ps1

Stored in .universal\schedules.ps1

This script is responsible for configuring schedules.

You can use the New-PSUSchedule cmdlet in this file.

Scripts.ps1

Stored in .universal\scripts.ps1

This script contains the meta-data for scripts. Actual scripts can be stored anywhere. The path that is included is relative to the repository. Full path names are also allowed.

You can use the New-PSUScript cmdlet in this file.

Settings.ps1

Stored in .universal\settings.ps1

This script is responsible for configuring system settings.

You can use the Set-PSUSetting cmdlet in this file.

Tags.ps1

Stored in .universal\tags.ps1

This script is responsible for configuring tags.

You can use the New-PSUTag cmdlet in this file.

Triggers.ps1

Stored in .universal\triggers.ps1

This script is responsible for configuring triggers.

You can use the New-PSUTrigger cmdlet in this file.

Variables.ps1

Stored in .universal\variables.ps1

This script is responsible for configuring variables.

You can use the New-PSUVariable cmdlet in this file.

Vaults.ps1

Stored in .universal\vaults.ps1

This script is responsible for configuring vaults.

Templates

Using the Templates folder within the Repository, you can create a selection of item templates for commonly used features in PowerShell Universal. This includes apps, app pages, scripts and endpoints.

Script Template

PS1 files in the following folders will be provided as templates in the admin console.

  • Templates \ App

  • Templates \ AppPage

  • Templates \ Endpoint

  • Templates \ Script

.psuignore

The .psuignorefile can be used to exclude certain files or patterns from the file system watcher in PowerShell Universal. This is useful when saving files like logs to the repository directory. The format of the file should be a single regular expression per line. If the regular expression matches a path, the configuration system will ignore it.

File Encoding

You can configure file encoding in the Settings \ General page. By default, PowerShell Universal will use UTF-8 with a byte order mark (utf-8-bom) at the beginning of the file. If you would like to disable the byte order mark, you can change the encoding to utf-8.

Supported encodings are any returned by Encoding.GetEncodings. For example:

  • utf-32

  • utf-32-bom

  • utf-8

  • utf-8-bom

  • windows-1250

You can add -bom to end of the encoding to add the byte order mark.

Read-Only Configuration Sections

Read-Only sections allow you to include script in your configuration files that will not be touched by changes in the admin console. This allows you to run additional logic, generate resources dynamically and create classes for use in OpenAPI schemas.

The PSUHeader region is placed at the top of your script. PSUFooter is placed at the bottom.

Database Resources

You can optionally configure resources to be stored in the database rather than within the configuration repository. These resources will no longer be stored on disk and will be stored directly in the database. This makes them instantly available to allow connected computers in the PSU cluster.

Some resources are not supported. These include:

  • Apps

  • Endpoints with paths

  • Scripts

  • Modules

To configure a resource for database persistence, you need to setup the App Settings for each class type. Below is an example of storing schedules within the database.

Last updated

Was this helpful?