It has been a long time since the PowerShell integrated scripting environment (ISE) shipped with Windows PowerShell 2.0 in 2009. Since then .NET has become open source and cross-platform in form of .NET Core. Since PowerShell is built on top of .NET, it was an important pre-requisite before making PowerShell cross platform. Also, PowerShell has become cross-platform as of today. It is also open-source like .NET core. You can find the same at GitHub as well. In fact, we did discuss the open-source PowerShell namely 6.0 installation in few of the earlier posts as well.
Perhaps, you are also aware that Visual Studio Code is open-source as well. It has become ongoing choice of platform development these days as its backed by PowerShell Team at Microsoft. Going back at history, to support cross-platform PowerShell script development, Microsoft had started two new open-source projects. The PowerShell Editor Services project provides language and debug services for editors that want to support PowerShell script development beyond basic syntax colorization. The other project is vscode-powershell, which is a Visual Studio Code extension that integrates the PowerShell Editor Services. Both projects have took significant community contributions.
Why Visual Studio Code for PowerShell development?
- Enhanced editor services
- Open folder for editing (easily access multiple files)
- Peek/Goto definition
- Find all references
- Search and replace across multiple files
- Go to Symbol
- Task runner (configure to run Pester tests)
- Toggle render whitespace
- Multiple cursor support (edit multiple lines at once)
- Background script analysis by using PSScriptAnalyzer with code fix support coming soon
- Enhanced debugging
- Variables window with support for setting variables during debug
- Watch window for watching variable values
- Breakpoints window with support for line, function, and conditional breakpoints
- Breakpoint hit count support
- Call Stack window
- Built-in support for Git version control
- Support for multiple color schemes including dark and light schemes
- Rich extension ecosystem
- Enhanced editor services
It is also to be noted that it has become a great tool of choice by PowerShell team and they are putting a great deal of effort towards its development. So that reason alone is enough. However, there is nothing to be worry about if you want to stay with the ISE. It works great and is suitable for many cases. Also it’s available out-of-the-box or as part of windows features.
Install and Configure Visual Studio Code
To get started with Visual Studio Code, you need to install it on your choice of machine of development from https://code.visualstudio.com/. You can use either any operating system of your choice and follow instructions specific to that operating system installation and binaries.
Once it’s installed, open it and it will look like below:
To get started with PowerShell development, we’ll need to install the PowerShell extension. First, select Extensions from the View menu (or press Ctrl+Shift+X on Windows). In the Extensions view, type PowerShell in the search box, and then press Enter. The PowerShell extension from Microsoft should show up at the top of the search results:
Click little green icon named Install associated with the extension. It will take few seconds and then get installed. After the PowerShell extension is installed, you will need to reload Visual Studio Code to use the extension. There should be a button named Reload, where the install button was:
On windows, this should be enough to get you started. However on Linux / MacOS, you would need to install the PowerShell. Check out this blog post on instructions for same.
Now, we can go ahead and select a folder to open existing PowerShell scripts. For this, open explorer (or Ctrl+Shift+E on windows) from View Menu:
Once you select a folder and a script, you should be able to see the scripting environment in its glory:
At this point, you should be able to open PowerShell scripts or folders that contain multiple PowerShell scripts and edit them with rich IntelliSense support and enhanced editor features. You can also start with a new, empty file (called “Untitled-1”). You can tell PowerShell to treat that file as a PowerShell script by either saving the file with a .ps1 extension or by setting the language mode to PowerShell. To set the language mode, open the Command Palette from the View menu, or press Ctrl+Shift+P (Cmd+P on Mac). Type change language mode or use fuzzy matching by typing clm, and then press Enter. After you’re in Select Language Mode, type ps to select PowerShell, and then press Enter.