You can run code or an entire script conveniently from the editor in Visual Studio Code (VSCode) with the Code Runner extension. The VSCode PowerShell extension adds other important features that you know from PowerShell ISE.

Michael Pietroforte

Michael Pietroforte is the founder and editor in chief of 4sysops. He has more than 35 years of experience in IT management and system administration.

In my previous post, I explained how you can add PowerShell Core 6.0 as a terminal to VSCode and work with multiple different shells side by side. We have seen that VSCode comes with basic support for PowerShell and offers features such as syntax highlighting.

VSCode PowerShell extension ^

However, to get a similar convenient feature in PowerShell ISE, you need to install the Visual Studio Code PowerShell extension. When you first save a file with the suffix .ps1, VSCode will recommend installing the PowerShell extension. You can then simply click the Install button.

The PowerShell extension comes with its own terminal (the PowerShell Integrated Console), which you can use in addition to the shells we configured in my last post. Unfortunately, the PowerShell Integrated Console does not support syntax highlighting like the other shells we've used before.

You can run selected code in the editor by pressing F8. If you want to execute a particular line, you only have to move the cursor to that position. This is useful, but better ways exist to run code snippets in VSCode which I will cover below.

IntelliSense shows you your options as you type, and when you hover with the mouse over a cmdlet, you'll see its syntax.

IntelliSense in VSCode

IntelliSense in VSCode

Auto-completion allows you to complete the command or parameter by pressing the Tab key (press it multiple times to get all the options). This also works in the console.

PowerShell Script Analyzer checks the quality of your code. You might want to configure PSScriptAnalyzer because its default rules are perhaps a bit too strict if you only want to execute code snippets on your console.

PSScriptAnalyzer complains about an unused variable

PSScriptAnalyzer complains about an unused variable

To do so, press CTRL+SHIFT+P and start typing "scriptan…" Then select PSScriptAnalyzer Rules and press Enter. You can then select and deselect rules.

Changing PSScriptAnalyzer rules in VSCode

Changing PSScriptAnalyzer rules in VSCode

The extension has more useful features for scripting in PowerShell, which you can find on the extension's page and in the FAQ. You can also press CTRL+SHIFT+P and then type "PowerShell" to discover more features. Here, we focus on using VSCode as a console and don't cover all those features.

PowerShell features in VSCode

PowerShell features in VSCode

Running selected code from the editor ^

The main reason I like to use a scripting environment as a console is you can type your command in the editor and run it from there. This is useful if you run the same or a similar command many times a day or if you are unsure about the correct syntax and have to edit your command several times until it finally works. Sometimes I have multiple versions of the command in the editor and just have to select the one that fits best for the current task. You can also write a quick little script if a one-liner is not going to do the job.

Above, I mentioned that the PowerShell extension allows you to execute code from the editor by pressing F8. If you want to execute an entire script, you first have to select the complete code, which is not what we know from ISE. Moreover, the PowerShell extension always executes code in its own terminal, which does not support syntax highlighting, and it uses Windows PowerShell 5.1 instead of PowerShell Core 6.0.

Unfortunately, the built-in way to run code from the VSCode editor is also a bit longwinded. But no worries—we will fix that in a moment. Let's see first how the code-execution feature built into VSCode works.

Open a new file first (CTRL+N), and save it (CTRL+S). It is important you've added the extension .ps1 because otherwise VSCode won't recognize that your code is PowerShell. Once you've saved the file, syntax highlighting will work.

Now select one of the PowerShell terminals and then mark the code you want to execute in the editor. Next, press Ctrl+Shift+P and type "run sel." Then chose Terminal: Run Selected Text In Active Terminal.

Run selected code in VSCode

Run selected code in VSCode

This will be faster if you assign a shortcut to the Run Selected Text command (File > Preferences).

Executing Code with Code Runner ^

However, with the help of the Code Runner extension, it is more convenient to execute code from the editor. To install the extension, click the Extensions icon on the left and type "code runner." Install the extension and then click Reload.

Installing Code Runner for VSCode

Installing Code Runner for VSCode

Before I explain how to use Code Runner, we have to change its configuration a little. By default, Code Runner will execute code in the Output tab. This is not good if you want to run an interactive script or if you want to continue working in the console after you've launched the command.

To tell Code Runner to run code in the Terminal, you have to add the line below to your VSCode settings. Make sure you separate all your settings with commas as shown in the screenshot below.

By default, Code Runner will execute PowerShell code with Windows PowerShell on a Windows machine. To tell Code Runner to use PowerShell Core, you can add the following lines to your settings.json:

You can see we also can configure the execution policy here. Your configuration should look like the screenshot below.

Configuring Code Runner to execute in the Terminal

Configuring Code Runner to execute in the Terminal

Code Runner offers several ways to run code from the editor. As in PowerShell ISE, you can execute the entire script by simply clicking the Run Code icon or pressing CTRL+ALT+N. Note that Code Runner will run the version of the script you've last saved and not the current code in the editor window. Also note that Code Runner uses its own terminal and not the one you opened before.

If you only want to run selected code, you can right-click and click Run Code in the context menu, or you can press CTRL+ALT+N after you select the code. To stop running the code, you can press CTRL+ALT+M.

Code Runner offers a variety of settings I don't cover in this blog post. You can find them all in the package.json file in "$env:UserProfile\.vscode\extensions\formulahendry.code-runner-0.8.7" on a Windows machine. On Linux and macOS, you can find the extensions under ~/.vscode/extensions. To change one of these settings, you don't have edit package.json. Just copy the settings to your VSCode user settings and change the configuration there.

Executing code in VSCode with Code Runner

Executing code in VSCode with Code Runner

Conclusion ^

The downside of Code Runner is that it can only execute commands in its own terminal. Thus, you have to decide if you want to work with Windows PowerShell or PowerShell Core. The PowerShell extension has the same restrictions and its console does not offer syntax highlighting. The built-in code execution feature of VSCode has the advantage that it executes the code in the active terminal, but you always have to first select the code.

That is why I usually work with Code Runner and only use the built-in feature if I have to execute code in a shell other than my default shell. Of course, this doesn't mean that you don't need the PowerShell extension. Its features are very useful in the editor.

Even though I've only scratched the surface of VSCode in my two articles, I think you've noticed that this scripting environment is much more powerful than PowerShell ISE. Thus, I hope I've convinced you to move on and leave ISE behind. I also encourage you to work with PowerShell Core 6 instead of Windows PowerShell. Visual Studio Code is the perfect environment to run both PowerShell versions side by side for a while.

Join the 4sysops PowerShell group!

8+

Users who have LIKED this post:

  • avatar
Share
5 Comments
  1. Ray 1 year ago

    There is no need to open and then save a document to make it understand PowerShell. Open Preferences and change the default language to PowerShell. Why not take the few seconds to make that change rather than open and immediately save? Open the document and start coding....much easier.

    2+

    • Author

      Ray, thanks for the hint! To set PowerShell as the default language, you have add this to your settings: "files.defaultLanguage": "powershell",

      2+

  2. Stephen Garthwaite 9 months ago

    Great couple of articles. Gave me some deeper insight into the usage and setup of VSCode and encouraged me to finally drop my reliance on the PowerShell ISE as a fallback option for running PowerShell scripts.

    2+

    Users who have LIKED this comment:

    • avatar
  3. Eric 5 months ago

    you assume people know how to change the settings or where to change them.  That's not the case with everybody especially if you've never used the application before

    0

Leave a reply

Your email address will not be published. Required fields are marked *

*

© 4sysops 2006 - 2019

CONTACT US

Please ask IT administration questions in the forums. Any other messages are welcome.

Sending

Log in with your credentials

or    

Forgot your details?

Create Account