The Windows PowerShell Integrated Scripting Environment (ISE) is a combined shell, debugger, and script editor that comes with PowerShell. Considering its capabilities, it's significantly underused. After I talk about the reasons why the PowerShell ISE is underused, I’ll explore how to take advantage of it.
Before getting started, however, let me mention the two things you can’t do with the PowerShell ISE:
- You can't run or even install the PowerShell ISE on Windows Server 2008 Server Core because the ISE depends on graphical APIs that aren't available.
- You can't run interactive console applications within the ISE because it doesn't have console APIs. You can still use console applications non-interactively or start an external instance of one.
Why the PowerShell ISE Is Underused
Based on my experiences talking with people, a common reason why the PowerShell ISE is underused is a lack of knowledge about its capabilities. When I say the ISE is underused, I don't just mean people using the PowerShell console application instead of the ISE. I also mean people using the PowerShell ISE who haven't taken advantage of its labor-saving features.
A second reason for the underuse is that on Server 2008, only the console version of PowerShell is installed by default. The PowerShell ISE isn’t installed because it uses the Microsoft .NET Framework 3.5.1, which isn’t installed. If installing the .NET Framework 3.5.1 isn’t a problem, you can install the PowerShell ISE without rebooting. Here's how: From the server console, open Server Manager, go to Features, then choose Add Feature. Select Windows PowerShell Integrated Scripting Environment from the feature list, and click Install. Windows will prompt you for confirmation that you also want to install the .NET Framework 3.5.1. Click Yes, then proceed with the installation.
Alternatively, from a console PowerShell prompt, you can run the following two commands:
Import-Module ServerManager
Add-WindowsFeature PowerShell-ISE
GUI Conveniences in a Shell
An immediate benefit of using the PowerShell ISE is its general features as a shell, not a script editor. You get access to many of the same keyboard accelerators and other conveniences that are standard across graphical applications.
So, Ctrl+A selects everything in a pane, Ctrl+C copies, Ctrl+X cuts, and Ctrl+V pastes. Although not earth shattering, this feature repeatedly saves you little bits of time and effort. The complete list of keyboard shortcuts for the PowerShell ISE is available at Microsoft TechNet.
The accessibility of this graphical application is even more significant. Although the benefits are easy to overlook when you're used to working with graphical applications, the PowerShell ISE provides:
- Visibility. You can see many possible processing actions on the toolbar.
- Hints. The pictures on icons and the labels on menus and menu items suggest uses.
- Proximity. Activating items takes only a few milliseconds.
Another graphical element I find useful is the ability to have several sessions and scripts open at the same time in one instance. You can run up to eight PowerShell sessions at a time in the same window and a large number of scripts. (How large I can't say; I've had up to 300 short scripts open for editing at one time.)
At first glance, it might seem that a GUI focus is in conflict with PowerShell's philosophy. However, there’s no conflict. PowerShell's tie to the console window isn’t APIs but rather the concept of pipeline-based work processing. Making use of any tool that simplifies work is the real PowerShell philosophy.
Easy Remote Sessions
One of PowerShell 2.0's features is session remoting. The PowerShell ISE walks you through setting up an interactive PowerShell session on a remote machine. To begin, select New Remote PowerShell Tab from the File menu (or just press Ctrl+Shift+R). You'll get the prompt shown in Figure 1. After you enter the information and click Connect, you’ll get the standard credentials dialog box.

Figure 1: Setting up an interactive PowerShell session on a remote machine
Alternatively, you can use the Enter-PSSession command to set up an interactive PowerShell session on a remote machine. However, I find that setting it up through the File menu saves a bit of time and a lot of annoyance, making the New Remote PowerShell Tab option one of my favorites.
Lightweight Advanced Editing
I still prefer to use the two text editors I know well (SAPIEN Technologies' PrimalScript and Helios Software Solutions' TextPad), but if you're on the go or don't have a favorite editor, the PowerShell ISE beats Notepad hands down, even for editing files that aren't scripts.