April 2022 - Product Updates and Releases

PowerShell Pro Tools PowerShell Universal Product Updates

April 12, 2022

quote Discuss this Article

This post outlines the new features of PowerShell Pro Tools and PowerShell Universal that have been added in the April 2022 release cycle. This is a big one! 🥳

Table of Contents

PowerShell Pro Tools 2022.4.0

We have released new versions of the entire PowerShell Pro Tools suite of tools.

Show-PSEditor

We’ve added a new cmdlet to edit PowerShell scripts directly in the console. It provides syntax highlighting, IntelliSense, syntax error checking, and execution. Show-PSEditor is cross-platform and even works in the browser in terminals like Azure Cloud Shell.

Show-TUIDesigner

The TUI Designer is now a part of the PowerShell Pro Tools module. Using Show-TUIDesigner you can create PowerShell-based console GUIs.

MacOS ARM Support for VS Code

The PowerShell Pro Tools for VS Code extension now supports MacOS ARM.

PowerShell Universal 2.10

The April release of PowerShell Universal provides many new features built into the existing feature groups. See below for some notable examples.

APIs Defined by Path

You can now define API endpoints by path rather than in a single file. Using the -Path parameter of New-PSUEndpoint, you can point to an external file that will be called when executing the endpoint.

New-PSUEndpoint -Url '/get' -Method GET -Path 'Get.ps1'

Timezone Selector for Schedules

When creating schedules, you can now select the timezone within the admin console.

New Dashboard Features

We’ve added numerous new dashboard features include -HeaderContent, -NotAuthorized, -PageNotFound, and -LoadNavigation for New-UDDashboard.

Enhanced CPU and Memory Management

PowerShell Universal will now automatically reclaim unused runspaces from APIs and dashboards. When busy, the server will allocate up to the maximum configured runspace count to provide the best performance. When not as busy, the server will reclaim and dispose of these runspaces to reduce the overall memory footprint of PSU.

Improvements have been made to the execution engine in APIs, jobs and dashboards to reduce the script execution time of standard runspace pools by up to 500%.

VS Code Walkthrough

The PowerShell Universal VS Code extension now provides a walkthrough to configure it and connect to your instance.

PowerShell Universal 3.0-beta1

We’re happy to announce the first beta of the next major version for PowerShell Universal. With PowerShell Universal v3, we are aiming for a simple upgrade from v2 with numerous new features to the core of the platform.

SQL Server Support

PowerShell Universal v3 supports configuring SQL Server as the persistence layer for jobs, identities, and app tokens. It also takes advantage of shared job queues so multiple PSU instances can use a single database. This means that your scheduled scripts will only run on one agent at a time without having to manage it yourself.

Universal Dashboard - MUIv5

Universal Dashboard has been upgraded to MUIv5. This is the latest major version of the popular UI framework PowerShell Universal uses for dashboards. We’ve worked to elimate breaking changes and isolate client-side errors that may result from the upgrade. External components like charts, maps, styles, and the code editor are now included directly in the UD framework. You can still install and use third-party components.

Universal Dashboard - New Components

We’ve added new components like New-UDStack, New-UDTimeline and New-UDBadge. You’ll also be able to use the theme-aware -Sx parameter on New-UDStyle to adjust styles based on your theme rather than just static CSS.

Additionally, you can build complex forms using hashtable-based schemas with New-UDForm’s new -Schema parameter. You’ll be able to create fields, enforce validation and define the resulting object type just with a hashtable.

$Secret Scope

The $Secret scope can now be used throughout your scripts. Rather than loading secrets when the environment is first loaded (and keeping the values in memory for the duration), secrets are now loaded on demand. You can use the $Secret scope to access the value of these secrets.

Invoke-Command -ComputerName remote-machine -Credential $Secret:Credential

This helps to improve performance (as reading many secrets can be slow) and improve security posture by reducing the amount of private information stored in memory.

Upgraded to .NET 6.0 and PowerShell 7.2

PowerShell Universal now runs on .NET 6.0 and PowerShell 7.2. The latest, stable version of the .NET platform provides performance improvements to both the runtime as well as the web server. PowerShell 7.2 is now the default for the integrated environment.

Repository Editor

You can now edit any file within the repository. You can also create and delete files and folders on the fly.

Live Log View

You can now view the live log view on the diagnostics page. Similar to Log Stream in Azure, it provides up to second log messages coming from your PSU server.

HTTP.sys Support

You can now configure PowerShell Universal to use the HTTP.sys listener on Windows. Primarily, this is beneficial for users that wish to use Windows Authentication without having to configure SPNs within their environment. HTTP.sys uses kernel-mode authentication so it does not require configuration of SPNs.

Service Configuration During Installation

You can now configure the service account and port when installing PowerShell Universal using the MSI. Upgrades of PSU will now retain the service account without having to reconfigure it.

Refactored Internal Communication

We’ve completely refactored the internal communication channel between the PowerShell Universal server and external PowerShell processes. This increases performance by avoiding needless allocations and conversions and reduces the overall source code line count to provide a more managable and less error-prone RPC layer.