PowerShell comes in 4 versions and 4 flavors! Choosing the right one ensures scripts run correctly, the best performance, and future compatibility. Microsoft doesn’t really guide your selection out of the box. How do you choose the right one? How do you know when to use ISE and which ISE to use? Easy – let’s find out how!
What Version Should I Run?
99.99% of the time, you should be running the latest version. As of today, that version is 4. If you are running Windows 8.1/Server 2012 R2, PowerShell 4 is installed by default. If you are running Windows 7/Server 2008 (or R2), you can (and should) upgrade to version 4. If you are running Windows 8, you should upgrade to Windows 8.1.
PowerShell 4 is a part of the Windows Management Framework. You can update to PowerShell 4 by downloading the Windows Management Framework 4.0 installer. Be sure to choose the correct OS/architecture update. If you are running Windows Vista or below, you are out of luck. You will need to update to Windows 7 or above.
If you are curious, you can see what PowerShell version you are running very quickly. In PowerShell, type $PSVersionTable. You should see an output like this:
There might be a few occasions where you need to run PowerShell in version 2. This is almost always caused by an external plugin or module. If you have an issue like this, launch powershell with a -version 2 as an argument (powershell.exe – version 2).
Console or ISE
PowerShell comes in two versions: Console and Integrated Scripting Environment (ISE). The console is very similar to the Command Prompt, very fast, and runs on any modern Microsoft OS (including Server Core). However, the console is about as user friendly as the Command Prompt and has nonstandard hotkeys. This is really important when you are copying and pasting a lot!
The ISE has a combination of a scripting pane and command window. ISE is user friendly and scalable for novices and experts but can’t run on Server Core. As long as you are not running PowerShell on a Server Core installation, always use the ISE for most of your work. It combines the console like experience with a script editor and a GUI help window (the commands pane).
If you are just interested in speed, the console will be your choice. I only use the console when I am launching prewritten scripts and embedding them into management consoles or when I am using a scheduled task.
X86 or X64
This is one that I had wrong for a long time! I defaulted to the X86 version thinking it would be more compatible. With PowerShell, Microsoft’s main focus is on the X64 version. The X86 version is supported for backward compatibility and is used in certain instances (such as SCCM integration). The X64 version has more performance and is the default supported architecture. When given the choice, always choose the X64 version for the console and ISE.
So does that clear up the myriad of PowerShell choices? If not, let me know in the comments and I’ll be happy to help you!