Support

Get help with Devolutions PowerShell Universal.

avatar

Marco

SQLite Error 5: 'database is locked'

Product: PowerShell Universal Version: 2026.1.5 Hello everyone, I currently have a (serious) problem with a dispatcher script that throws errors when executing around 150 scripts, for some of them: Status(StatusCode="Unknown", Detail="Exception was thrown by handler.", DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1778133607.433000000","description":"Error received from peer ipv6:[::1]:50383","file":"..\..\..\src\core\lib\surface\call.cc","file_line":953,"grpc_message":"Exception was thrown by handler.","grpc_status":2}") Failed to check concurrency limits.: SQLite Error 5: 'database is locked'. , Status(StatusCode="Unknown", Detail="Exception was thrown by handler. SqliteException: SQLite Error 5: 'database is locked'.") and SQLite Error 5: 'database is locked' . It is only a handful of scripts, but this could cause major issues in the production environment. For executing the 150 scripts I use several predefined caches, which save me from constantly querying Active Directory. I have already limited the maximum number of parallel executions to 5. The whole setup runs on IIS and PowerShell 7. I hope someone can help me as soon as possible. Should i enable the IIS advanced setting property “Disable Overlapped Recycle” from “false” to “true”?

77

5

avatar

Marco

avatar

alonzohess

Service won't start after migrating to SQL Server

PSU 2026.1.5 I migrated from SQLite to SQL server 2017 CU31 with: .\psu db migrate -scn 'Data Source=C:\ProgramData\UniversalAutomation\database.db' -tcn 'Data Source=SQLServer;Initial Catalog=PSU;Integrated Security=True;TrustServerCertificate=true' -tdt 'SQL' Data load seemed to go fine. I changed the Appsettings.json file to reflect: { "Kestrel": { "Endpoints": { "HTTP": { "Url": "http://*:5000" } } }, "Plugins": [ "SQL" ], "Data": { "RepositoryPath": "%ProgramData%\\UniversalAutomation\\Repository", "ConnectionString": "Data Source=SQLServer;Initial Catalog=PSU;Integrated Security=True;TrustServerCertificate=true" }, "Mode": "Server", "PSUTelemetry": true } Service won't start. Windows event log shows: Faulting application name: Universal.Server.exe, version: 1.0.0.0, time stamp: 0x69970000 Faulting module name: KERNELBASE.dll, version: 10.0.17763.8755, time stamp: 0x44e2a81a Exception code: 0xe0434352 Fault offset: 0x0000000000041b39 Faulting process id: 0x1d1c Faulting application start time: 0x01dcef98f9e03c82 Faulting application path: C:\Program Files (x86)\Universal\Universal.Server.exe Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll Report Id: 6eae0462-2c56-4aa6-b783-252bf3c31609 Faulting package full name: Faulting package-relative application ID: Application: Universal.Server.exe CoreCLR Version: 9.0.1426.11910 .NET Version: 9.0.14 Description: The process was terminated due to an unhandled exception. Exception Info: Microsoft.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Computer' in the database. at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, SqlCommand command, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite) at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName) at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.Execute(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean beginTransaction, Boolean commitTransaction, Nullable`1 isolationLevel) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.<>c.<ExecuteNonQuery>b__3_1(DbContext _, ValueTuple`6 s) at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IReadOnlyList`1 migrationCommands, IRelationalConnection connection, MigrationExecutionState executionState, Boolean commitTransaction, Nullable`1 isolationLevel) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.MigrateImplementation(DbContext context, String targetMigration, MigrationExecutionState state, Boolean useTransaction) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c.<Migrate>b__20_1(DbContext c, ValueTuple`4 s) at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.<>c__DisplayClass28_0`2.<Execute>b__0(DbContext context, TState state) at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementation[TState,TResult](Func`3 operation, Func`3 verifySucceeded, TState state) at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade) at PowerShellUniversal.SQL.DatabaseFeature.InitializeDatabase(IConfiguration configuration, ILogger logger) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.SQL\Plugin.cs:line 117 at Universal.Server.Services.SystemPluginService..ctor(IConfiguration configuration) in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Services\SystemPluginService.cs:line 48 at Universal.Server.Startup.ConfigureServices(IServiceCollection services) in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Startup.cs:line 75 at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr) at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services, Object instance) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass7_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services) at Microsoft.Extensions.Hosting.HostBuilder.InitializeServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at Universal.Server.Program.Main(String[] args) in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Program.cs:line 43 ClientConnectionId:459dc18c-b5f3-462e-a418-db40f7d99c47 Error Number:2714,State:6,Class:16 I've search the old forum and unless I missed something, the post seem to be a couple of years old and reference the old DataMigration.exe. Any ideas? Thanks,

30

1

avatar

Adam Driscoll

avatar

djmentat

New-UDSelect text is missing from the text box

Product: PowerShell Universal Version: 2026.1.6 After upgrading from 5.2.1 to 2026.1.6, I'm having an issue with New-UDSelect. The default value, nor a selected value, show in the text box anymore. When clicking the dropdown, the options are there but when clicking one it does not show the value in the text box. However, on the backend the selection is good. Clicking submit on the form passes validation and the ticket that is opened has the correct value listed. It's a front end issue, where the user cannot see any value in the box; whether it's the default value or a selected value. Seems to be related to https://forum.devolutions.net/topics/54901/bug-new-udselectgroup I found that if I remove my theme, the issue goes away. My theme is Material Ui based, so I commented out all the Mui overrides from the theme file then added them back in one at a time. I found the one that is having trouble is MuiListItemText. When you click the dropdown box to see the selections, I have the background set to a dark shade of gray and when hovering it changes to a lighter shade of gray. For contrast, I have the text color set to white "#ffffff" in MuiListItemText. When you click the dropdown box you can read the text as it's white. Normally, the text in the New-UDSelect text box remains as default, black. It's been working this way for 5 years, but now that I've upgraded to 2026.1.6 it seems the text in New-UDSelect box and the text of the selections are treated as the same color as what's in MuiListItemText. If I set MuiListItemText to a different color, I can see the default and selected values in the box, but it makes the text in the dropdown selections funky. So, it seems the text of the New-UDSelect value box and the text of the dropdown items used to be different, but now they're being seen as the same??? This is how it has been looking for the past 5 years. White text in the dropdown selections using MuiListItemText, and default/black text in the text box. [image] How it looks after upgrading to 2026.1.6. Notice you can't see anything in the text box. [image] How it looks if I change MuiListItemText to a different color, like black. [image] How it looks if I remove theming. [image] Code for the New-UDSelect $theme = Import-PowerShellDataFile '<Full path to theme file>.psd1' New-UDDashboard -Title 'Page Testing' -Content { New-UDSelect -Id 'select_region' -Label 'Region:' -Option { New-UDSelectOption -Name 'Central US' -Value 'centralus' New-UDSelectOption -Name 'West Europe' -Value 'westeurope' } -DefaultValue 'centralus' } -Theme $theme Code in my theme.psd1 file, from the overrides section. overrides = @{ MuiListItemText = @{ primary = @{ color = '#ffffff' fontSize = 14 fontWeight = 500 } }# MuiListItemText }# Overrides Unfortunately, I learned what I needed to know about Mui 5 years ago; just enough to get this theme created. I haven't worked with it since, so I can't take the troubleshooting any further. Seems this may be an issue with PSU, where the MuiListItemText is now being applied to both locations? For now I can change MuiListItemText color to black, as a work around. Would this be fixed in a future PSU update, or do I need to somehow put something else in my theme file, in my Mui overrides, to have the text be different colors between the dropdown selections and the text box text? Thanks, Rob

66

5

avatar

Adam Driscoll

avatar

lbaxhaku

Im getting loads of these service user login issues(1311) in my scheduled jobs

I periodically am getting schedules failing because of this error, so for a job that runs 6 times a hour, 2 out of 6 will fail with this error: Error executing job: Failed to login user (1311). System.ComponentModel.Win32Exception (1311): We can't sign you in with this credential because your domain isn't available. Make sure your device is connected to your organization's network and try again. If you previously signed in on this device with another credential, you can sign in with that credential. Some info around the setup: 2 Node Setup, SQL database backend(is in a 2 node AG as well) Repo is hosted on a UNC path but added via c:\PSU** as a sys link PSU runs via a gmsa account Have multiple other service accounts as variables which then the schedules use for their jobs ive traced and logged the connection to the DC's all night on multiple nights, but the connection is always there no fluctuation in stability, cant be the credentials since its a GMSA account Its pretty annoying having to hope for a schedule to run since its important they run reliably, when they need to run. Can anyone please give me some pointers or support on this? Let me know if i can provide more information!

29

1

avatar

Adam Driscoll

avatar

keithadams

PSU Login Page Issue

My Windows server had an updated and restarted itself, and when it came back up PowerShell Universal will no long let me get past this page. [image] I have tried different browsers, different people on different computers, and even going to the server and using localhost:5000/login, but they all give me this same screen. I also tried restarting the PowerShell Universal service, and restarting the server and no luck. There is no button to click and no extension will yield different results. Any suggestions on what to do?

85

15

avatar

rubentapia

avatar

nickireland

Forward Proxy support for Local Development Login

We have a forward http proxy with authentication enabled in our environment. When clicking "Login with Devolutions Account" I get the following exception: IDX20803: Unable to obtain configuration from: 'https://login.devolutions.com/.well-known/openid-configuration'. Will retry at '1/1/0001 12:00:00 AM +00:00'. Exception: 'System.IO.IOException: IDX20804: Unable to retrieve document from: 'https://login.devolutions.com/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: The proxy tunnel request to proxy 'http://{OurProxyServerAddressHere}/' failed with status code '407'." at System.Net.Http.HttpConnectionPool.EstablishProxyTunnelAsync(Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem) at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.SendAndRetryOnNetworkErrorAsync(HttpClient httpClient, Uri uri) at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel) --- End of inner exception stack trace --- at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel) at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel) at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)'. Is there a way we can define proxy configurations including credentials in the appsettings.json? I've tried to set HTTP_PROXY and HTTPS_PROXY vars for the windows service to no effect. Also tried setting NO_PROXY to * and .* to try and bypass the proxy detection but it still tries to use the proxy server.

26

3

avatar

Adam Driscoll

avatar

Mordecai

When using New-UDApp with -PageNotFound the default page "reset-password" is not working anymore

Hi, when i am using `PageNotFound` and `NotAuthorized` parameter for `New-UDApp` i cannot view the "reset-password" page when i run an app on "/" as ` BaseUrl` . When the password of PSU Admin acccount or other local accounts expires, the scriptblock in PageNotFound will be triggered and in my use case i will be redirected to a custom page. I do not know if this is also the same for other integrated urls that are located at "/". Anyone else have this? Can this please be reproduced/fixed? Demo code (AI generated, not tested, but parameters and usage are the same as for my use case): New-PSUApp -Name 'BugReport-ResetPassword' -BaseUrl '/' -Authenticated -Content { New-UDApp ` -Title 'Bug Report Demo' ` -PageNotFound { New-UDTypography -Text 'Custom PageNotFound' } ` -NotAuthorized { New-UDTypography -Text 'Custom NotAuthorized' } ` -Content { New-UDTypography -Text 'Home Page' } } Thanks René

24

0

avatar

dillonfishel

Resolved

Copy error or warning message to clipboard when clicking on the toast message

Any way to easily copy the error or warning text that shows up on the toast notifications. Today I try to inspect content and then rush to copy before it times out.

Recommended Answer

4 days ago

dillonfishel If you open the Log tab in the Admin Console for the App, it should have the error message there as well.

29

2

avatar

dillonfishel

avatar

akapsch

PSU Timing Out

We have noticed our server times out frequently. Sometimes it is bad enough where multiple time out popups spawn on top of each other, causing the screen to fade to black. If we refresh the window, we get a 504 error. Anyone have an idea why this might be? We are running 2026.1.5 on Linux.

55

4

avatar

Adam Driscoll

avatar

michaelhanson1458

Pester Tests

[image] I have installed the latest version of pester I cant seem to find anything in the logs around this. [image]

88

13

avatar

michaelhanson1458

avatar

lloydmitchell

Passing array of strings to endpoint via url - seems to be joining with a comma

Hello! I'm wondering if someone can point me in the right direction. Script consists of: Param([string[]]$Text) foreach($Item in @($Text)) { [pscustomobject]@{ Text = $Item } } If I then use the following (after creating the endpoint): https://PSU.server.address/EndpointName?Text=sometext&Text=somemoretext it seems to be joining both strings into a single string, delimited by a comma: [ { "Text": "sometext,somemoretext" } ] Is this known behaviour, or am I doing something wrong?

42

1

avatar

Adam Driscoll

avatar

roshan_simon

Script

Hi. Can you help with building a script for changing the connection type for each saved connection (session) to putty? Right now the connections are Remote Desktop connections which won't work for port 22 (ssh). I like my customized Putty. Or help with building a template for Putty? I can just convert the entries to Putty. If I open export the entries to a CSV file now, I only see Display name, description, IP address and port number.

79

2

avatar

roshan_simon

avatar

michaelwatts

PSU 2026.1 - Permissions on Scripts Not Working

Hello, I just upgraded and now permissions on script that are called from a dashboard for a custom role is no longer working. I verified that the role has automation/script - Read automation/script - Execute I even tried granting access via the script too. [5/19/2026 10:32:44 AM] [Error] [App- Intune Enrollment] Permission denied. The role specified does not have access to this resource. [File]: Intune Enrollment.ps1 [Endpoint]: d91db62a-8508-49b1-96ad-ca82f99415de [Page]: fcd68ebd-5a2d-4ed4-9408-79eee745ac01 I tried restarting the service as well. Not sure what I am missing. They can access the dashboard just fine, this happens when they click the button to look up the device which calls a script.

87

9

avatar

Adam Driscoll

avatar

lloydmitchell

ERR_TOO_MANY_REDIRECTS when accessing HA nodes directly

``` Product: PowerShell Universal Version: 2026.1.6 (also 2026.1.3 before upgrade) ``` We have two nodes in HA. Connecting to SQL server on the back-end, as well as Azure Devops for the git sync. we have a single certificate that's on both nodes, as well as the load balancer. What works: Accessing each endpoint locally via http(s)://localhost, or via the load balanced hostname. What doesn't: Using each node's hostname, either locally on the server or from a different machine on the same network. This is what's showing up in the browser's network calls. [image] There's also this filling up the log: ``` 2026-05-13 11:28:07.368 +01:00 [INF][Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler] Incomplete Negotiate handshake, sending an additional 401 Negotiate challenge. 2026-05-13 11:28:07.368 +01:00 [INF][Microsoft.AspNetCore.Hosting.Diagnostics] Request finished HTTP/1.1 GET https://SERVER_FQDN:5001/failed-login?error_id=225172db-fc68-43f5-88f2-0adb34037e51 - 401 0 null 0.4677ms 2026-05-13 11:28:07.372 +01:00 [INF][Microsoft.AspNetCore.Hosting.Diagnostics] Request starting HTTP/1.1 GET https://SERVER_FQDN/failed-login?error_id=225172db-fc68-43f5-88f2-0adb34037e51 - null null 2026-05-13 11:28:07.372 +01:00 [INF][Microsoft.AspNetCore.Hosting.Diagnostics] Request finished HTTP/1.1 GET https://SERVER_FQDN/failed-login?error_id=225172db-fc68-43f5-88f2-0adb34037e51 - 302 0 null 0.6914ms 2026-05-13 11:28:07.377 +01:00 [INF][Microsoft.AspNetCore.Hosting.Diagnostics] Request starting HTTP/1.1 GET https://SERVER_FQDN/failed-login?error_id=5a4214e0-5a25-4cf5-a155-b7e2c85ef7d2 - null null ``` Edge gives you an option to delete cookies when you receive the error, and on doing so it shows a PSU error page with the following: ``` An anonymous request was received in between authentication handshake requests. Authentication configuration is invalid. Please contact your administrator. ``` Refreshing after this has no effect. Both the servers and load balanced address are the same domain. I've tried changing ports, changing the wildcard for kestrel in appsettings to be a hostname (that just breaks it in other ways) and adding CORS exceptions to no avail. You get a basic auth prompt if in incognito or standard http, but that's the same result as above after filling out the credentials. We have a legacy Universal server on version 3.x which doesn't have the same issue with direct access. That server's in the same Active Directory OU, with the same policies. It's a 2016 server however, and the new ones are 2022. Right now it feels like either I've missed something in the configuration, or the OS is behaving differently with the auth requests. Hopefully someone has some insight they can shed on this... TIA

115

9

avatar

Adam Driscoll

avatar

michaelhanson1458

blazor.server.js?v=2026.1.6:1 Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State.

When going back to the PSU admin console and clicking an item in the nav menu i get the following in the console. The nav buttons dont seem to do anything in the UI until i do a hard refresh. I am not sure if this is something tied to a session time out or what. [image] blazor.server.js?v=2026.1.6:1 Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State. at on.send (blazor.server.js?v=2026.1.6:1:81942) at Jt._sendMessage (blazor.server.js?v=2026.1.6:1:59570) at Jt._sendWithProtocol (blazor.server.js?v=2026.1.6:1:59660) at Jt.send (blazor.server.js?v=2026.1.6:1:59768) at yo.beginInvokeDotNetFromJS (blazor.server.js?v=2026.1.6:1:136744) at w.invokeDotNetMethodAsync (blazor.server.js?v=2026.1.6:1:3968) at E.invokeMethodAsync (blazor.server.js?v=2026.1.6:1:5476) at eventHelper.ts:34:40 send @ blazor.server.js?v=2026.1.6:1 _sendMessage @ blazor.server.js?v=2026.1.6:1 _sendWithProtocol @ blazor.server.js?v=2026.1.6:1 send @ blazor.server.js?v=2026.1.6:1 beginInvokeDotNetFromJS @ blazor.server.js?v=2026.1.6:1 invokeDotNetMethodAsync @ blazor.server.js?v=2026.1.6:1 invokeMethodAsync @ blazor.server.js?v=2026.1.6:1 (anonymous) @ eventHelper.ts:34 setTimeout callback @ eventHelper.ts:34 blazor.server.js?v=2026.1.6:1 Uncaught Error: No interop methods are registered for renderer 1 at k (blazor.server.js?v=2026.1.6:1:13525) at blazor.server.js?v=2026.1.6:1:13431 at T (blazor.server.js?v=2026.1.6:1:13614) at I (blazor.server.js?v=2026.1.6:1:13405) at A.dispatchGlobalEventToAllElements (blazor.server.js?v=2026.1.6:1:16026) at A.onGlobalEvent (blazor.server.js?v=2026.1.6:1:15235) k @ blazor.server.js?v=2026.1.6:1 (anonymous) @ blazor.server.js?v=2026.1.6:1 T @ blazor.server.js?v=2026.1.6:1 I @ blazor.server.js?v=2026.1.6:1 dispatchGlobalEventToAllElements @ blazor.server.js?v=2026.1.6:1 onGlobalEvent @ blazor.server.js?v=2026.1.6:1 blazor.server.js?v=2026.1.6:1 Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State. at on.send (blazor.server.js?v=2026.1.6:1:81942) at Jt._sendMessage (blazor.server.js?v=2026.1.6:1:59570) at Jt._sendWithProtocol (blazor.server.js?v=2026.1.6:1:59660) at Jt.send (blazor.server.js?v=2026.1.6:1:59768) at yo.beginInvokeDotNetFromJS (blazor.server.js?v=2026.1.6:1:136744) at w.invokeDotNetMethodAsync (blazor.server.js?v=2026.1.6:1:3968) at E.invokeMethodAsync (blazor.server.js?v=2026.1.6:1:5476) at eventHelper.ts:34:40

55

4

avatar

Adam Driscoll

avatar

(anonymous user)

How to organize an APP page

Very new to Powershell Universal ...as in got it installed this week. We are still using an unlicensed version until I can prove out that it can do all that we need done. The first thing I'm working on is an APP that will collect parameters to be fed via Invoke-PSUScript to an automation Script. I am figuring that part out fairly well. What I can’t figure out is how to organize the actual app webpage. My example dummy script so far New-UDApp -Content { New-UDSelect -ID "Number" -Label 'Number' -Option { New-UDSelectOption -Name "One" -Value 1 New-UDSelectOption -Name "Two" -Value 2 New-UDSelectOption -Name "Three" -Value 3 } New-UDSelect -ID "word" -Label 'word' -Option { New-UDSelectOption -Name "One" -Value "Hello" New-UDSelectOption -Name "Two" -Value "GoodBye" New-UDSelectOption -Name "Three" -Value "No one is home" } New-UDButton -Text "Run Script" -OnClick { $value = (Get-UDElement -ID "Number").value $value2 = (Get-UDElement -ID "word").value Invoke-PSUScript -Name "test.ps1" -value $value -word $value2 -Integrated -Wait } -ShowLoading } So in this case when i “view app” it just stacks Number / Word / Run Script (click button) next to each other. I assume there has to be a way that I could say place "Number in top left of page, Word in top right and ‘Run Script’ click bottom in bottom left. How do you say where things go rather than just letting them stack up next to each other?

85

2

avatar

Adam Driscoll

avatar

krisr

Is PSU being abandoned ?

Is it just me, or is this project actually dying? Ever since PSU merged with Devolutions (actually, starting a few months before that), development has seriously slowed down. Adam stopped being as involved, releases got rare, and they had fewer new features and way more bugs. Now that the whole community got moved to Devolutions, even that's looks dead. There are barely any new posts on the forum, and the issue tracker was shut down without being migrated. I hope it’s just a temporary, but it doesn't look good...

151

3

avatar

Adam Driscoll

avatar

insomniacc

Performance degradation during SQL issues

I've had my PSU instance running nearly 2 years in my current org. A script/sync job I have, one of my earliest/longest running, has particularly poor error handling, while iterating through users there was a try catch block, that upon error would spit out the $UserObject | ConvertTo-JSON into the thrown error message. Stupidly I didnt think to really check this during development, but I found that recently it must have been triggering error after error through thousands of obects and spitting out a json object containing far more metadata and properties than is required for any error. Subsequently I think it borked my instance. Before I found out the root cause was the above script, I was having issues with performance, some jobs were failing before they even started, I couldnt get to job logs, the server was flipping all the time and maxing out resources/triggering infra alerts. I have errors upto my eyeballs in the PSU System logs, relating to sql timeouts or similar. Grooming was also failing. This was impacting both my nodes. Eventually after spotting the large data in my script errors, I decided to backup my DB and just truncated the following tables (since I didnt care about historical job logs/output): TRUNCATE TABLE JobOutput TRUNCATE TABLE JobPipelineOutput TRUNCATE TABLE JobFeedback TRUNCATE TABLE JobLog TRUNCATE TABLE JobQueues TRUNCATE TABLE JobParameter I left the Job table since it moaned about constraints, and it was relatively small at around 283 rows Then rebooted my service. After this, all my errors and issues went away, SQL monitoring cleared, infra resource alerts stopped, PSU is behaving normally. So while I realize to a large degree that this is self inflicted with the sheer amount of data I was pushing into the JobOutput table, I thought I'd post my experience here and my recovery steps. I'm wondering if there could be improvements made to how the application itself handles these issues or if this is just a tough luck scenario and just a case of ensuring to properly implement safe output in future? Thoughts?

74

5

avatar

michaelhanson1458

avatar

bcaydelotte

Resolved

New-PSUIdentity -Role Syntax

Attempting to add a few ad-hoc users to PSU via the PSU Powershell Module and while I can create via New-PSUIdentity including the -Role parameter keeps giving me a cannot convert from System.String to PowerShellUniversal.Role" Is there any documentation on this?

Recommended Answer

17 days ago

Attempting to add a few ad-hoc users to PSU via the PSU Powershell Module and while I can create via New-PSUIdentity including the -Role parameter keeps giving me a cannot convert from System.String to PowerShellUniversal.Role" Is there any documentation on this? bcaydelotte We probably should improve this behavior to provide the role lookup automatically. That said, you will have to retrieve a role object and then pass it to the identity cmdlet. $Role = Get-PSURole -Name "Administrator" New-PSUIdentity -Name "Adam" -Role $Role

60

2

avatar

bcaydelotte

avatar

SunnyJ

Multiple Endpoints Using the Same File

Product: PowerShell Universal Version: 2026.1.2 Hello, I’m trying to create multiple endpoints off the same script but it’s giving the following error: Endpoint already exists at path While the error is pretty self-explanatory, is there a reason why different endpoints can’t use the same code source? What I’m trying to accomplish is support GET requests without authentication but require auth/roles for POST or PATCH, where the code handles all three of the options rather than splitting it across multiple files and having repeat code. Is there a good way to accomplish without using multiple files?

123

6

avatar

SunnyJ

avatar

Marco

Performance Environments

Product: PowerShell Universal Version: 2026.1.5 Hi, I have a general question about your experiences with the environments. I would like to switch many/all scripts to PowerShell 7, but I have noticed that the scripts take significantly longer (15 seconds or more), whereas PowerShell 5.1 is more efficient. I noticed that when starting a script, nothing happens at first. Then I see that PSU provides the following information: “Loading Active Directory module for Windows PowerShell with default drive ‘AD:’”. With Integrated, I have the problem that I can’t use credentials, so that’s not an option. With PowerShell 5.1 under the current version 2026.1.5, I have the problem that it can no longer read certificates, whereas PowerShell 7 has no issues with this. Do you have any tips for me to increase efficiency or improve performance?

241

4

avatar

Mordecai

avatar

steven09

Developer License: what needs to be done if hosting on docker behind proxy server

Yesterday I wanted to apply for the developers license but I am kinda stuck at what to do to get that process to work. Just some background info that might help or make a difference: I’m running PSU on Docker behind a reverse proxy (Godoxy) No ports are exposed as the reverse proxy routes traffic to PSU in the container on port 5000 The only entrance via the reverse proxy is port 443 I was previously running PSU with ironmansoftware/universal:latest I switched yesterday evening to devolutions/powershell-universal:latest Version now shows : 2026.1.6 The reverse proxy protects PSU access by having Authentik involved as OIDC (configured in the reverse proxy settings, not PSU) I looked at the documentation on licensing: https://docs.powershelluniversal.com/licensing#static-login-port In that document it states I need to set this: { “PSULoginPort”: 60370 } To be honest, I have no clue where to set this and the documentation does not seem to mention this either. And then there is the fact I cannot reach that port anyway, there are layers of security around the setup of docker and containers that prevent opening ports to the public. The DNS does have anything regarding that port, the reverse proxy know nothing about that port, the docker compose has no port exposure, the container access is protected by OIDC via the reverse proxy so you need to authenticate before you can reach PSU on my docker env, that sort of thing. And then there is the fact that I have no clue why I would need to open that port anyway, it feels like a bit of overreach to ask people to expose a port to the internet and bypass all protective layers. And is there any documentation or statement from PSU/Devolutions on what will be sent back and forth? Can I close that port once the developer license is pulled in the PSU environment? So if I click the button “Login with Devolutions Account” I get this message in my browser: Firefox can’t connect to the server at 127.0.0.1:60370 So the question now is: what do I need to do to get that developers license? Is there a way to just login to the Devolutions website with my account (which I have) and generate/get a license that I can apply to PSU myself? That would be infinitely easier and more secure than opening port(s) or having some back-and-forth between my PSU container and some server from Devolutions. This process ‘feels’ a bit more complex then it should be, but that could be for a reason I am not aware of. Now I am assuming a lot here, about opening ports, listening servers and whatnot but that is because I have no clue what is needed and what will happen in the background once I (if indeed needed of course) open an unprotected port to the internet. Some clarity on the correct needed setup, the routes of traffic involved so I can understand what would be needed and what the impact is. In my case the involved parts are: DNS, Docker (compose), reverse proxy and Authentik Any help on this would be appreciated! PS: once I started using the image from devolutions/powershell-universal:latest I see a lot of messages like this in the logs of PSU: [10:48:06 INF] Microsoft.AspNetCore.Hosting.Diagnostics Request starting HTTP/1.1 HEAD http://172.18.0.22:5000/ - null null │ │ [10:48:06 INF] Microsoft.AspNetCore.Mvc.ChallengeResult Executing ChallengeResult with authentication schemes ( ). │ │ [10:48:06 INF] Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler AuthenticationScheme: Cookies was challenged. │ │ [10:48:06 INF] Microsoft.AspNetCore.Hosting.Diagnostics Request finished HTTP/1.1 HEAD http://172.18.0.22:5000/ - 302 null null 32.821ms │ │ [10:48:11 INF] Microsoft.AspNetCore.Hosting.Diagnostics Request starting HTTP/1.1 HEAD http://172.18.0.22:5000/ - null null │ │ [10:48:11 INF] Microsoft.AspNetCore.Mvc.ChallengeResult Executing ChallengeResult with authentication schemes ( Is this to be expected? Perhaps it is meant to be, no idea here.

Recommended Answer

a month ago

I have confirmed with Adam that the Developer License flow is intended for local editing, not remote access. PSULoginPort is the intended setting for your scenario, but it only makes the local login port static. It does not change the loopback host from 127.0.0.1 . The documentation was a little unclear on this and it will be fixed this week. Sorry about the confusions.

160

7

avatar

steven09

1 - 25 of 1896 items