Support

Support forum for Devolutions PowerShell Universal

avatar

egreiff

All scheduled jobs failing after upgrade to 2026.3.4

All PowerShell 7 jobs failing immediately with the following [image]

14

0

avatar

realslacker

Invoke-PSUScript against specific computer?

I have an computer running the Devolutions agent registered with PSU. I can target that agent when submitting a job via the GUI, how can I do so when I run Invoke-PSUScript from PowerShell? I have tried using the -ComputerName parameter, however that doesn't work.

7

0

avatar

egreiff

No keyboard input accepted in debug terminal

I have updated to 2026.3.4, which fixed the error when entering the app debug terminal, but I still have no keyboard input available. This was also the case prior with v2026.3.3. How can I get keyboard input so I can actually do something?

11

0

avatar

michaelhellebrandt

PSU 2026.3.4 – Permission denied when accessing script/job history from within a PSU App

Hi, I'm currently migrating an existing PowerShell Universal v4 dashboard to PSU v5 and running into permission issues when trying to access automation scripts and their job history from within a PSU App. Environment PowerShell Universal: 2026.3.4 App environment: Windows PowerShell 5.1 Authentication: Windows Authentication (Active Directory) App roles: User, Administrator App definition: Code App URL: /ccms-admin What I'm trying to achieve In PSU v4, we used automation scripts to collect monitoring data from Exchange, SCOM, and DSC. The dashboard periodically checked the latest completed and running PSU jobs. If the latest results were too old and no job was running, a new job was started. The dashboard then displayed the pipeline output of the latest completed job. This allowed multiple administrators to use the same dashboard without triggering redundant data collection jobs. I'm trying to implement the same concept in PSU v5. The problem I created a simple test automation script: New-PSUScript -Name 'CCMS-HomeProbe.ps1' ` -Description 'Test job for monitoring data collection' ` -Path 'Skripte\CCMS-HomeProbe.ps1' The script runs successfully when executed manually from the PSU administration interface and produces the expected pipeline output. However, when my PSU App tries to retrieve the script and its jobs using Get-PSUScript and Get-PSUJob, the request fails. The current error is: Test failed: Get-PSUScript failed: Permission denied. The role specified does not have access to this resource. The error occurs already at Get-PSUScript, so the subsequent Get-PSUJob and Get-PSUJobPipelineOutput calls are never reached. The calls are made from a PowerShell function invoked by a New-UDDynamic component in the App. What I've tried Verified that the automation script is registered in PSU and executes successfully when started manually. Verified that the App is configured with the User and Administrator roles. Configured explicit resource permissions using the new PSU permissions interface: Identity | Resource | Access Administrator | automation.scripts.Skripte/* | All User | automation.scripts.Skripte/* | All Confirmed that the test script is located under Skripte\CCMS-HomeProbe.ps1, matching the configured resource path. Retested the App after changing these permissions. Unfortunately, the error remains unchanged. We also experimented with the PSU server cache in an earlier prototype, but encountered permission errors there as well. We therefore removed the cache entirely and switched to reading the job history directly. The current problem concerns access to automation scripts and their jobs. Expected behavior An authenticated administrator using the PSU App should be able to: Retrieve an existing automation script. Check its latest completed and running jobs. Read the pipeline output of a completed job. Start a new job when necessary, provided the user has the appropriate permissions. This worked in our previous PSU v4 implementation. Questions Is this a known issue with integrated PSU cmdlets in version 2026.3.4? Which resource permissions are required for an App to access automation scripts and job history? Are the permissions for reading job history different from those for managing or executing scripts? Is there a recommended way to implement this monitoring pattern in PSU v5 without granting unnecessarily broad permissions? I'd prefer to keep using the native PSU cmdlets rather than implementing direct REST API calls or managing additional API tokens. Any guidance would be appreciated. Thanks! Michael

18

1

avatar

Michel Audi

avatar

insomniacc

Job fails to run on PS5.1 after upgrade from 2026.2.4 to 2026.3.4

Regardless of script - I've tried multiple and a simple ```Write-Output "hello world"``` type script, I just get failed jobs when attempting to run in a 5.1 environment after upgrading to 2026.3.4. [image] PSCore scripts all seem to work fine. I've removed the existing 5.1 environment and auto re-discovered it, updated my script's environment to this, and retried but it's the same. Also tried rebooting the server to no effect. When switching the same script to use a PS Core environment, it works fine. Is this a known issue with the latest update? Environment details: Installed as a service, running under a service account on windows. Server sits behind squid proxy with limited outbound access.

90

9

avatar

tompiechota

avatar

denistiri

How can I set PSU to another culture?

I noticed my PSU runs on "en-US" because I get (crazy ;) ) dates like month/day/year instead of logical day/month/year How can I change this? without having to set in my scripts? Thanks

36

3

avatar

Patrick Ouimet

avatar

danielkrauss

Resolved

PSU 2026.3.4 – PowerShell 7 handshake failures and internal gRPC connection errors

Hello everyone, I'm currently evaluating PowerShell Universal 2026.3.4 for potential use in our environment. I have used PSU in the past and am now considering using it again. I installed PSU locally on a Windows 11 machine using the MSI installer, running it as a Windows service under `LocalSystem`. Unfortunately, neither the default PowerShell 7 environment nor an additional custom PowerShell 7 environment works. Even simple test scripts fail to execute. The `Integrated` environment generally works. The PSU logs show: [WRN] Job process exited before handshake was received. PowerShell process 2724 exited before responding to the job handshake. The host logs contain: [ERR] Failed to start server. Grpc.Core.RpcException: StatusCode="Unavailable" Detail="failed to connect to all addresses" at IJobAgent.SetAgentInformation(...) at UniversalAutomation.Host.GrpcProtocol.SetClientPort(...) Additionally, commands such as `Get-PSUApp -Integrated` and `Get-PSUEndpoint -Integrated` fail in the built-in PSU console. Both take quite some time before returning the same gRPC error: StatusCode="Unavailable" Detail="failed to connect to all addresses" So far, I have checked the following: Tested the PSU service under both `LocalSystem` and an AD service account, with no difference. Verified that the internal gRPC client port is reachable locally over both IPv4 and IPv6. Checked proxy/NO_PROXY settings and Kestrel endpoints. Reviewed `PSModulePath` without finding any obviously invalid directory paths. Found no related application crash events in the Windows Event Log. Some host logs also contain: [ERR] Error checking module path System.ArgumentException: The path is not of a legal form. at UniversalHost.AgentService.Initialize(...) My question: Am I missing a basic configuration step or prerequisite for a standard MSI installation running as a Windows service? Or is this a known issue with PSU 2026.3.4? Since both external PowerShell 7 environments and internal PSU cmdlets are affected, I suspect the issues might be related to PSU's internal gRPC communication. Any suggestions would be greatly appreciated. Thanks in advance!

57

4

avatar

danielkrauss

avatar

michaelhanson1458

Job timout issue

Currently running 2026.2.5 in prod with sql as the backend and we started randomly getting the following. Error executing job: PowerShell did not respond in a timely fashion. PowerShell Universal is currently waiting 120 seconds for PowerShell to start running the script. You can increase the timeout by setting the 'Job Handshake Timeout' setting in the Settings \ General \ Automation page. If you are still experiencing issues, you may need to consider increasing the resources available on your system or take advantage of the Random Delay parameter for schedules to stagger jobs. We can usually just re-run these jobs but this is a workaround at best.

79

6

avatar

Patrick Ouimet

avatar

finnsloss

Backlog

Code Folding in VSCode using the Devolutions PowerShell Universal Extension 2026.3.3 is not working.

Collapsing code using the pop out arrows at the side of the code, or the ctrl-k ctrl-1 shortcut to collapse all functions down is not working in the last several versions of the extension. Code folding is working correctly for PowerShell files accessed from the local computer, but not through the Devolutions connection. I have a rather large script 13,000 lines long, this makes it quite a task to scroll through and find the right section without folding! Please help!

72

3

avatar

Patrick Ouimet

avatar

vincentbts

Resolved

Upgrade change Install Directory

Hello, I am currently using PowerShell Universal 2026.1.6, installed in the following directory: D:\Apps\Universal I recently upgraded to version 2026.3.4 However, when I upgrade PowerShell Universal, the folder D:\Apps\Universal is deleted, and the installation is automatically redirected to: C:\Program Files (x86)\Universal Is it possible to prevent this behavior and keep the installation in the original directory during upgrades? Best regards,

37

2

avatar

vincentbts

avatar

ashrafulalam

Backlog

Alberta Time Zone Change

After the recent daylight saving time change in Alberta, the time zone configuration in PowerShell Universal (PSU) appears to be incorrect. The PSU server time zone has been configured as "Mountain Time (Alberta)" , and all scheduled jobs are configured to use the America/Edmonton time zone. However, PSU is still operating one hour behind the current Alberta local time. I could not find any reference for a time zone setting in the PSU docs. PSU Server Time: [image] PSU Dashboard Time: [image] PSU seems to be operating one hour behind the current Alberta local time. It appears to be following the previous daylight saving time offset, despite the PSU server time zone and job schedule time zone settings being correct. We have jobs suppose to run every 10 minutes. The screenshot was taken on the PSU server itself. [image] [image]

45

2

avatar

ashrafulalam

avatar

malcolmradelet

Backlog

Restricting access to edit a script "Execution Role"

We have some secret variables that contain tokens or keys for sensitive systems. We assigned a new role to them, but it seems like the only way to access the variables is by assigning the script to this role. If we update the script "Execution Role" to our custom role everything works great. But... we don't want anyone to just be able to assign this new role. For example: Author A can write scripts and access all variables Author B can write scripts, but we don't want them to access Secret1 Author B simply writes a script and assigns it to the "Secret1 Access" role and then just outputs the value to the terminal. Now they know the value. I want to be able to say "Only authors in Secret1 Access role can assign scripts to the Secret1 Access role". How can I do that?

149

11

avatar

Patrick Ouimet

avatar

realslacker

How to supply a value to a [File] parameter using Invoke-PSUScript

I have a script that takes a file upload, and from the GUI it prompts for a file using the file browser. How can I call this from Invoke-PSUScript?

28

1

avatar

Michel Audi

avatar

nikopieper

Resolved

Surpress Module Loading Info in Apps

Is there any way of surpressing the Message of module loading in apps? i Know it goes away after a few seconds but users are asking questions... Like this: [image] Technically the App is running in an peristant environment which should import the Module on startup.

Recommended Answer

5 days ago

Hello Niko, Thank you for the screenshot, it shows exactly which message your users see. There is a per app setting meant for this. That message is the progress bar the Active Directory module writes while it loads, and an app shows progress output as a popup unless its interactive host is turned off. In the admin console, go to Apps and open the app's properties. Depending on your version, that is either Edit Properties in the app's menu or the edit button in the app's Actions column. On the Experience tab, check Disable Interactive Host and save. Then restart the app so it starts with the new setting, and check whether the popup is gone. If you define the app in a script instead, the same setting is the -DisableInteractiveHost switch of New-PSUApp. https://docs.devolutions.net/powershell-universal/cmdlets/New-PSUApp/#-disableinteractivehost We tested this on PowerShell Universal 2026.3.4. With an environment that imports the Active Directory module at startup, as you describe, the popup still appeared on the first page load. With Disable Interactive Host on, it did not appear in that environment or in the others we tried, and the module still loaded normally. Turning the setting on for an existing app and restarting it had the same result. Please check one side effect first. With the interactive host off, prompts such as Read-Host and Get-Credential no longer work in that app. If the app relies on them, or if the message still appears after the restart, let me know with your PowerShell Universal version and we will look further. Best regards, Michel

38

1

avatar

Michel Audi

avatar

allanwarner

Logging - User\Process correlation within logs

Hello. I am trying to work out if there is a way to correlate from logs the log entries to specific users\processes... i.e APP --> SCRIPT How do I correlate the log entries from the APP with the log entries from the SCRIPT... Is this possible? I am struggling to see how I can correlate entries to specific user\process runs... Am I missing something?

45

3

avatar

Patrick Ouimet

avatar

mshepard70

2026.3.3.0 - Error with Set-PSUCache

I have a script which loads various items into the PSU Cache. One is a csv that's 7,158kb, and has always succeeded. Now with 2026.3.3.0, I get this error. I don't know if there's a setting that could be adjusted (couldn't find one in app.config).: 08:33:02.176 ERROR Status(StatusCode="Unknown", Detail="Exception was thrown by handler. BadHttpRequestException: Request body too large. The max request body size is 30000000 bytes.", DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1791293582.012000000","description":"Error received from peer ipv6:[::1]:64789","file":"..\..\..\src\core\lib\surface\call.cc","file_line":953,"grpc_message":"Exception was thrown by handler. BadHttpRequestException: Request body too large. The max request body size is 30000000 bytes.","grpc_status":2}")

116

7

avatar

mshepard

avatar

shawniverson

Cannot commit changes to git

After upgrading to Powershell Universal 2026.3.0, we couldn't commit any changes to git in the Admin panel. Adding a commit message and clicking the button does nothing, and immediately following the attempt, all UI elements become unresponsive, such as items on the scope pane, so you cannot navigate away without refreshing the whole page. Upgrading to 2026.3.3 did not resolve the problem. Running on Windows. Problem persists in all browsers (Firefox, Chrome, Edge).

77

10

avatar

shawniverson

avatar

squinlan

Resolved

Groom Jobs Do Not Complete and Scheduler stops processing until restarted

PowerShell Universal Version: 5.5.2 I have an issue on my Development server, where the Groom Jobs do not complete and this causes the scheduler to stop processing any new jobs. Restarting the PowerShell Universal service fixes it, but this is not a great solution. The same issue does not occur on my production server (thankfully). After a restart, everything works normally, but it takes around 2 hours before the scheduler stops processing new jobs. Any new jobs started manually just stay in the "queued" status forever. Any scheduled jobs simply don't get queued at all. I looked in Hangfire, and the groom schedule runs every minute or so, but the jobs never complete. Other scheduled or manual jobs do appear in the hangfire queue and do complete normally, but once the hangfire queue gets to 100 processing jobs, then everything just stops. All 100 jobs are for the Groom Service. It always stops once the processing jobs gets to 100 entries. I restarted the service yesterday and then left it overnight so you can see the issue more clearly via the screenshots. There are exactly 100 jobs in the processing queue. And they are all the same IGroomService.Groom job. There are almost 2000 queued up jobs. 17 hours ago was when I restarted the service. The enqueued jobs are both Groom ones and the ones from the PSU scheduler. [image] In PSU, the jobs page shows all the jobs being successful up until the hangfire processing queue filled up, and then just the login trigger script when I logged in, and one job that gets launched via an api trigger. The scheduled jobs just never get queued in this view. They are visible in hangfire though (enqueued jobs). [image] I enabled debug logging and after the restart of the service, I see these errors in the system log. They repeat multiple times per second. 2026-10-21 16:06:21.226 +01:00 [WRN][UniversalAutomation.GroomService] Failed to clear job queue. Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: The database operation was expected to affect 1 row(s), but actually affected 0 row(s); data may have been modified or deleted since entities were loaded. See https://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions. at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.ThrowAggregateUpdateConcurrencyExceptionAsync(RelationalDataReader reader, Int32 commandIndex, Int32 expectedRowsAffected, Int32 rowsAffected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.ConsumeResultSetWithRowsAffectedOnlyAsync(Int32 commandIndex, RelationalDataReader reader, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.ConsumeAsync(RelationalDataReader reader, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at PowerShellUniversal.Extensibility.EFTable`2.SaveWithRetryAsync(DbContext context) in D:\a\universal\universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 720 at PowerShellUniversal.Extensibility.EFTable`2.SaveWithRetryAsync(DbContext context) in D:\a\universal\universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 726 at PowerShellUniversal.Extensibility.EFTable`2.DeleteAsync(T item) in D:\a\universal\universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 158 at PowerShellUniversal.Extensibility.EFTable`2.DeleteAsync(T item) in D:\a\universal\universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 158 at UniversalAutomation.GroomService.GroomJobQueue(Int32 groomDays) in D:\a\universal\universal\src\Universal.Server\Services\GroomService.cs:line 29

56

2

avatar

squinlan

avatar

lloydmitchell

Inconsistent property behaviour in Apps

I've got the following code (stripped down to mostly just logic), which gets AD user details. Sometimes I get all properties back, but rarely. More often than not (95% of the time), the MemberOf value is missing. Very frequently Canononical Name, Last Logon Timestamp, Mail, and TargetAddress will also be missing. I always get back Name, SamAccountName, UPN, DN and SID. The properties names exist in the object, just not their corresponding values. At first I thought it might be something with the session scope, but that doesn't seem to be the case (I've tested with toast messages outputting the object assigned to a temp variable before handing it off to the session). I don't get this issue if I test in the terminal, nor do I get it running scripts - so the service account is fine. It's only using the app. Note: The code does a couple of 'sync-udelement' hops because there are other items being pulled back elsewhere in the full version. $session:UserID = $null $session:User = $null $cache:UserProperties = @( "Name", "SamAccountName", "UserPrincipalName", "Enabled", "CanonicalName", "DistinguishedName", "LastLogonTimestamp", "SID", "Mail", "TargetAddress", "MemberOf", "ShowInAddressBook" ) New-UDApp -Title "User Overview" -Content { New-UDForm -Content { New-UDTextbox -Id 'txtSearchQuery' -Label 'Enter User ID' } -OnSubmit { $session:UserID = $EventData.txtSearchQuery Sync-UDElement -Id 'LoadUser' } New-UDDynamic -Id 'LoadUser' -Content { if (-not [string]::IsNullOrWhiteSpace($session:UserID)) { # Issue appears to be right at the 'get-aduser' call - property values are missing here $session:User = Get-ADUser -Identity $session:UserID -Property $cache:UserProperties Sync-UDElement -Id 'UserDetails' } } New-UDDynamic -Id 'UserDetails' -LoadingComponent { New-UDProgress -Circular } -Content { if ($session:User) { # Splits the object into a name/value list $Data = ($session:User | Select-Object -Property $cache:UserProperties).psobject.Properties.foreach({ [pscustomobject]@{Property=$_.Name; Value=$_.Value} }) $Columns = @( New-UDTableColumn -Property Property -Title Property New-UDTableColumn -Property Value -Title Value ) New-UDTable -Data $Data -Columns $Columns } } }

125

17

avatar

lloydmitchell

avatar

brownjohn423

FailoverClusters Module in Windows Docker Container

Is there a way to get the FailoverClusters module running in the Windows docker container? It looks like the windows feature has been removed from the docker image, and I haven't been able to find a way to get it installed. I tried copying the module files to the running container doesn't work, as PowerShell throws errors when importing the module. I'm trying to migrate from the PowerShell module install of PowerShell Universal to the docker container, and this is the last thing that's holding me up. I have a custom module I created for my company that relies on the FailoverClusters module, and I would prefer not to have to re-write the module.

275

7

avatar

brownjohn423

avatar

realslacker

Implemented

Using the API to enter and leave maintenance?

We have scheduled database server maintenance and we can script a pre and post action. I would like to use the API to enter and leave maintenance on all of the PSU servers while the database server is down. I've tried calling PUT /api/v1/computer?id={id}&maintenance=true however this just results in a new computer object being created in the database, so I can't imagine this is the correct way to do this.

158

4

avatar

Maxim Robert

avatar

egreiff

Error when opening the debug console

XtermBlazor fit addon assets failed to initialize. Error: XtermBlazor fit addon assets failed to initialize. at registerXtermFitAddon (https://psu.ad.spscc.ctc.edu/assets/js/site.js?v=2026.3.3-37052641275:415:11) at async w.beginInvokeJSFromDotNet (https://psu.ad.spscc.ctc.edu/_framework/blazor.server.js?v=2026.3.3-37052641275:1:4167) at async Xt._invokeClientMethod (https://psu.ad.spscc.ctc.edu/_framework/blazor.server.js?v=2026.3.3-37052641275:1:67161) at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](Int64 targetInstanceId, String identifier, JSCallType callType, Object[] args) at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync(IJSRuntime jsRuntime, String identifier, Object[] args) at PowerShellUniversal.PsuTerminal.OnAfterRenderAsync(Boolean firstRender) in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Shared\Components\PsuTerminal.razor:line 144 at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState) Is there a known fix for this?

79

2

avatar

Maxim Robert

avatar

jol

Resolved

PowerShell Universal Remote Execution via Devolutions Agent - Modules and Secrets Not Available

Hi I'm currently running PowerShell Universal 2026.3.2.0 together with Devolutions Agent 2026.3.1 and I'm having some issues when executing scripts remotely through the agent. Issue 1: PSU Modules Not Copied to Remote Server The scripts execute on the remote machine, but none of the modules from the PSU repository appear to be copied to the target server. On the remote host, the following directory is empty: Plain Text C:\Windows\SystemTemp\PowerShellUniversal\Repository\Modules As a result, any script that depends on repository modules fails with errors such as: The specified module 'ModuleName' was not loaded because no valid module file was found in any module directory. Questions Is module synchronization to the remote execution host expected to happen automatically? Does the Devolutions Agent only transfer the script itself and not the PSU repository modules? Is there any additional configuration required to make PSU modules available during remote execution? Issue 2: PSU Secrets Not Available During Remote Execution The same scripts run successfully when executed locally on the PSU server, but when executed remotely through the Devolutions Agent, secrets are not found. The error returned is: PSU secret 'SecretName' not found. Create it under Secrets in the PSU admin portal.   Questions Are PSU Secrets expected to be available when scripts are executed through a remote Devolutions Agent? Does the agent have access to PSU Secret Management, or must secrets be retrieved differently in remote execution scenarios? Is additional configuration required to allow access to PSU Secrets from remote agents? Environment PowerShell Universal: 2026.3.2.0 Devolutions Agent: 2026.3.1 PSU deployed in High Availability (HA) configuration with 2 Windows IIS nodes PSU repository synchronized through Git PSU nodes are load balanced behind a NetScaler ADC Remote execution via Devolutions Agent Repository modules are stored in the Git-synchronized PSU repository

Recommended Answer

20 days ago

Hi Jacob, Thank you for the detailed write-up. We reproduced both points with PowerShell Universal 2026.3.3, whose agent code is the same as your 2026.3.2, and the Devolutions Agent 2026.3.1. Modules Is module synchronization automatic? No. For each job, only the script and the environment's startup scripts are copied to the agent. Does the agent only transfer the script? Yes. Repository\Modules is created and added to the module path, but nothing fills it: in our lab it stayed empty and the job failed with your error. What configuration is needed? Install the modules on the target server for all users. In our lab, a module in C:\Program Files\PowerShell\Modules loaded in the agent job. That is the PowerShell 7 folder, which the agent uses by default; for Windows PowerShell 5.1 it is C:\Program Files\WindowsPowerShell\Modules. Secrets Are PSU secrets available through the agent? Not through $Secret:. On the agent the Secret: drive does not exist, while the same script on the server read the secret. We did not find your "PSU secret ... not found" message in PowerShell Universal; could you send us the line of your script that looks the secret up? Does the agent have access to PSU secret management, or is there a setting? No, and we found no setting for it. What worked in our lab is a credential parameter: 1. Store the secret as a credential (PSCredential) variable. 2. Declare it in the script, for example param([PSCredential]$SecretCredential). Avoid the name Credential: Invoke-PSUScript keeps it for Run As. 3. Bind the variable when you start the job. We ran Invoke-PSUScript -Name <script> -Queue <agent ID> -SecretCredential (Get-PSUVariable -Name <variable>), and the credential reached the agent job with its user name and password. The run form's credential drop-down is documented, but we did not test it: https://docs.devolutions.net/powershell-universal/automation/scripts/parameters 4. Read the secret with $SecretCredential.GetNetworkCredential().Password. We tested only credential secrets. Are yours credentials or plain values, and do the jobs start from a schedule, the admin console or a script? Best regards, Michel

114

4

avatar

jol

avatar

simon

Resolved

Git for Dev and Prod Instance

Hi, i want to start using a Git Repo for our PSU Instance. I've set-up everything based on the Docs ( Git | Devolutions PowerShell Universal | Product guides & reference ) but im unsure now how to use it in a good way. We have our Prod instance, this is configured to OneWay-Sync, so it will only pull new changes from the main branch. Our Prod instance has Variables, Schedules, etc. configured too. Im a bit confused now how to handle Development work. We would need to clone the main branch as a new dev branch, but then all of the Variables are pointing to our Prod Systems (Azure for example). The schedules will run too, which should not as those are pointing to Prod System too. Is there any more detailed tutorial how to handle this or are there any other people which use this already? Thanks!

Recommended Answer

20 days ago

Hi Simon, Thank you for the clear description of your setup. Yes, there is guidance for it: the Git page has a Branching Strategies section for this layout. A separate dev instance, with its own database and scheduler, runs against a dev branch, while production pulls main one-way. Changes reach production when you merge dev into main. Each instance needs its own license. https://docs.devolutions.net/powershell-universal/config/git/#branching-strategies The order matters for your two concerns. Schedules: first, before you create the dev branch and connect the dev instance, add -AvailableInBranch 'main' to each New-PSUSchedule line that must only run in production, in .universal\schedules.ps1 on main, and commit (the One-Way console is read-only). PSU then runs such a schedule only on an instance synced to main; a schedule with no branch set runs everywhere. These schedules also no longer appear in the dev console, so edit them in schedules.ps1. https://docs.devolutions.net/powershell-universal/automation/schedules Variables: on the dev instance, tick Store In Database on the variables that differ between dev and prod (or -Database with New-PSUVariable), and set the dev value. The repository then holds only the definition, and each instance keeps its own value in its own database. When that change reaches production, the variable is empty there until you set it with the Set Variable Value button, which stays available in One-Way mode, so set it right after the sync. Secret values sit in the vault, not the repository, so they also differ per instance when each instance has its own vault, such as the Database vault. https://docs.devolutions.net/powershell-universal/powershell-commands/new-psuvariable https://docs.devolutions.net/powershell-universal/platform/variables/ Other users describe the same dev/prod layout on our forum (on an older version): https://forum.devolutions.net/topics/54183/development-flow Best regards, Michel

68

2

avatar

simon

avatar

adriandeller

Custom Login Page Title not working after 2026.3.3 upgrade

a value of "PowerShell Universal" is not displayed on the login page, but what works is: "PowerShellUniversal" "PowerShel Universal" "PowerShell Universa" this looks like a bug (some regex or search&replace) to me. any idea what changed and/or how to fix?

61

1

avatar

Michel Audi

1 - 25 of 2031 items