Executive Summary: PowerGUI, Quest Software’s free Windows PowerShell development tool, provides a graphical interface with a tabbed environment for script editing and IntelliSense-style prompting. PowerGUI lets you manage your PowerShell snap-ins and also has code snippets to help you create syntactically correct PowerShell scripts. PowerGUI’s built-in debugging feature will help speed your script development.

I was involved in a project recently where I was converting a number of Windows shell scripts to Windows PowerShell scripts. Fed up with Notepad, I began looking for development alternatives. I knew of Quest Software’s PowerGUI, a free PowerShell development tool, and decided to give it a try. I was hooked in seconds. PowerGUI solved my PowerShell development woes by providing a productive .NET-style development environment for scripts. If you’re into PowerShell development, I definitely recommend giving PowerGUI a try. You can download it from powergui.org/index.jspa. My top ten features of PowerGUI are:

10. Graphical editor—The core of PowerGUI is its graphical editor. As you would expect, the editor provides basic editing and cutand- paste functionality. It also provides a split-view window that lets you work on two different sections of the same script. In addition, the editor provides integrated line numbers on the left side of the window, which makes it easy to locate lines that generate script errors.

9. Tab-based development environment—The PowerGUI development environment uses a tabbed interface. Unlike Notepad’s single-document interface, PowerGUI lets you open multiple scripts simultaneously in different tabs, which facilitates reading related scripts and copying and pasting between them.

8. IntelliSense-style PowerShell prompting—Although it’s not the full-blown IntelliSense that Microsoft Visual Studio offers, PowerGUI’s IntelliSense-style prompting is a real asset in helping you learn about and use the various PowerShell cmdlets. The PowerGUI prompting provides cmdlet name completion, and it also displays the parameters for each PowerShell cmdlet.

7. PowerShell libraries—PowerGUI lets you manage Power- Shell snap-ins that add functionality to your PowerShell development environment, such as providing access to Active Directory, Microsoft Exchange Server, and Microsoft SQL Server. The PowerGUI Library includes several snap-ins that you can download from powergui.org/kbcategory.jspa?categoryID=21.

8. Code snippets—PowerGUI includes templates that make it easier to create syntactically correct PowerShell scripts. PowerGUI’s code snippets are accessed by right-clicking in the editing window. The PowerShell snippets include foreach, Do While, Do Until, For, If, Else, and many other common PowerShell statements.

5. Output window—The Output window is shown in the lower right of the development environment. It displays the output from the currently executing script. It also displays full error messages, which can be a big help during your initial script development.

4. Run in External PowerShell Window—The Run in External PowerShell Window option launches a new PowerShell console window in which to execute your script. I found the Output window most useful during the beginning stages of a script’s development, but I found the external window option more useful near the end of the process because it runs the script just like your production environment would.

3. Script input parameters—Developing your scripts is just the starting point. You also need to run them, and you might need to supply one or more parameters. The Input script parameters here box at the top of the PowerGUI Integrated Development Environment (IDE) lets you provide script input parameters and easily see the value of the parameters that are used. The input parameters are shared between all open scripts in your IDE.

2. Locals window—The Locals window is a really nice debugging feature. Displayed by default in the lower left corner of the development environment, the Locals window shows all of your script variables and their values. It also displays any instantiated .NET objects and lets you drill down into their properties.

1. Integrated debugger—Without a doubt, the integrated debugger is my favorite PowerGUI feature. I’ve been looking for the ability to debug PowerShell scripts for some time, and PowerGUI provides exactly what I wanted. The debugger lets you set breakpoints and gives you the option to single-step through your code. You forget just how useful a good debugger is when you don’t have one for a while. This feature really sped up my script development and helped me to write better scripts.