I’ve been using Windows PowerShell since the very first version of Monad in 2005, but PowerShell-based applications with a graphic user interface (GUI) are a whole new world. Instead of thinking of cmdlets and parameters or properties and methods, you need to think in object events. And because there’s no console with .ps1xml-directed views, you need manage all output streams, including standard output and errors.

Most importantly, because you’re dealing with real users, you need to assume that people will type and click whatever they please in whatever order you let them. It reminds me of turning the car over to my teenagers for the first time. In a GUI app, the user drives. So, if you don’t want them to go somewhere, you need to enable and reveal parts of the interface selectively.

PowerShell Studio automates the complex parts, including loading assemblies, instantiating objects, and registering event handlers, so you can focus on making great PowerShell GUI apps.

Here are some of the fabulous resources that I used to help me learn how to create PowerShell GUIs. If you have a favorite book, tutorial, or blog post, comment and I’ll add it to this post.

Windows Forms PowerShell Gui Template by Nickolaj Andersen
Nickolaj provides a template for creating a form object in Windows PowerShell. PowerShell Studio does all of this work for you, but it’s useful to see and understand what goes on under the covers.

Basic GUI App Techniques

Now that you have the basics, avoid the most common errors encountered by scripters moving to GUI apps:

Best Practices for UI Design

Where do I put that button? Should I center the textbox? You might be new to GUI app development, but your GUI apps don’t have to advertise it. Learn from user experience and human factors engineers about best practices for UI design.

About Face: The Essentials of Interaction Design 4th Edition by Alan Cooper, Robert Reimann, David Cronin, & Christopher Noessel
Learn the principles of UI design from people who study user-computer interaction. An excellent book for beginners and experienced designers.

User Interface Design for Administrators
When do you use a button? When are radio buttons better than checkboxes? SAPIEN Chief Technology Officer, Alexander Riedel, creates a control table that you’ll refer to again and again.

Single Form or Multiple Dialogs?
How much is too much on a single form? Learn the guidelines that professional UI developers use to make this critical decision.

How I learned to love DialogResult
The DialogResult property closes my form abruptly. Why shouldn’t I just set its value to “None?” Learn about the best-practice standards that DialogResult supports.

Those Nagging Questions

PowerShell GUI: Why think in events?
A PowerShell GUI application consists of an unordered collection of event handlers. It’s so different from traditional scripting that you learn to think in a whole new way.

Troubleshooting & Debugging

How I Learned to Love DialogResult
If your form closes immediately when you click OK (or another standard button), instead of staying open so that you can use it, it might be caused by the value of the DialogResult property of the button.

One-A-Day: Explore the Windows Forms Controls

One of the best, and easiest, ways to learn the UI controls, is to read our Spotlight articles and try the examples. You can read the MSDN documentation about Windows Forms controls, but our Spotlight articles, designed for PowerShell scripters, focus on the most important features of each UI control, and get you going with PowerShell examples.

Use your “Month of Lunches” habit to explore one new control each day.

In PowerShell Studio, to open a Spotlight article about a control:

In the Toolbox or Property pane, right-click a control and then click View Spotlight Article.

Or, in the Designer window, right a control, click Help, and then click View Spotlight Article.