Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PowerShell open remote GUI session for UIAutomation

I'm currently working on automatic installation of GUI application using library UIAutomation PS Extensions (https://uiautomation.codeplex.com/). It works pretty well in cases, when I run it against existing Windows user session. I run my PS script, it opens a window and I can click on buttons and so on ..

However, problem raises when this library is called from remote machine. I call my script (which should open a GUI window and start controlling it) via PsExec from remote machine. This causes that script is not able to open GUI window on remote machine and starts to produce various exceptions.
As workaround for this, I can make PsExec to connect to specific existing session on remote host, but unfortunatelly this is not stable as I can't guarantee session's existence.

Does enyone know whether it's possible to force PowerShell to open new session (interactive GUI) through which I would be able to call UIAutomation commands?

Thank in advance Matthew

like image 204
Matthew Lowe Avatar asked Apr 23 '15 19:04

Matthew Lowe


People also ask

How to install uiautomation in PowerShell?

1) Download and unzip the latest package from its official website: UI Automation PowerShell Extensions to la ocal path, for example, C:\UIAutomation 2) Import the module into the PowerShell script: ( Note: When you run this command, make sure you are not running PowerShell as an Administrator)

What is uiautomation?

UIAutomation is an open source project PowerShell extension for GUI automation tests. It supports Win32, Windows Form, WPF, and so on.

How do I enter a remote Windows PowerShell session?

To enter a remote Windows PowerShell session, use the Enter-PSSession cmdlet to create an interactive remote Windows PowerShell session on a target machine. If you do not supply credentials, the remote session impersonates your current sign-in info.

How do I launch a GUI application using PowerShell?

Using standard PowerShell methods (WinRM, WMI) you can't launch applications with GUI. The only solution I know about is to use PsExec from SysInternals (or similar tools). It can launch applications which present GUI to the user. Your command line will look like this:


1 Answers

I'm not clear on whether it's feasible to remotely open a new interactive desktop session in which to run GUI tests that require one. I'd be interested to find out if it's doable, since problems like this frequently come up when folks try to set up CI tests of Windows GUI apps.

Alternatively, I'd propose solving this by configuring the machine where your tests run to log in as a user at boot. Then you can remotely launch your tests as that user, and make use of their open session. That's worked in the past for me when I've run into similar issues.

like image 99
Bill Agee Avatar answered Sep 21 '22 06:09

Bill Agee