Migrating from Universal Dashboard v2.9

Since there have been some questions about this the last couple of days, I’ve started to put together a migration doc to go from Universal Dashboard to PowerShell Universal. I’ve also started to put together migration information for users that want to try UDv3.


The most up to date examples for UDv3 can be found on GitHub.

The goal is to make it as painless as possible to move from Universal Dashboard v2.9 to PowerShell Universal. The hope is that you can change minimal amounts of script within your dashboards and have them work in PSU using the UDv2 framework that is included.

If you run into issues with UDv2 in PSU, please file an issue.

Also, note that you can still run your dashboards for free within PSU. It has the same limitations that prevent authentication without a license but removes the remote access restriction. You’ll also have access to Universal Automation to run up to 25 jobs a day.


Are there any tutorials or guides for migrating Authorization Policies to PSU? I looked at the docs and i still don’t fully understand how i am supposed to migrate over from New-UDAuthorizationPolicies.

Ah, good point. I’ll get some docs put together for that. That needs to be part of the migration doc.

That is good to know! Is there any timeline for this?

Plan on early next week sometime

I’ve written up some migration information here: https://docs.ironmansoftware.com/dashboard/dashboards/migrating-from-universal-dashboard-2.9#authentication-and-authorization

There is also some information here: https://docs.ironmansoftware.com/config/security#authorization

So, reading this over, It wouldn’t just be moving from:

$User.HasClaim(“http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid”, “S-1-5-21-4237598787-2812544678-794467769-137112”)


$User.Claims(“http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid”, “S-1-5-21-4237598787-2812544678-794467769-137112”)

Is this method of claim no longer supported?

The $User object is of a different type now. That said, after writing this up, I think we should introduce a HasClaim method so you dont have to change this at all. I’ll put that on the backlog.

This is the structure of the $User object.

public class ClaimsPrincipal
    public List<Claim> Claims { get; set; } = new List<Claim>();
    public Identity Identity { get; set; } = new Identity();

public class Identity 
    public string Name { get ;set; }

public class Claim 
    public string Type { get; set; }  
    public string Value { get; set; }
    public string ValueType { get; set; } 
    public string Issuer { get; set; }
    public Dictionary<string, string> Properties { get; set; } = new Dictionary<string, string>();

Ok, i think i can work around that in the meantime…

Second question is how do i set those policies on the pages themselves? New-UDPage does not seem to have anything for Roles or AuthorizationPolicy?

That is a miss on my part. I’ll put that in the backlog too. i didn’t even realize that was missing.