What I Learned About VSCode At The PowerShell Summitt

I am going to assume that if you are reading this article that you know what Visual Studio code is and have installed the PowerShell extension for it, so this article isn’t going to tell you how to do any of that. If you don’t know what VS Code is, it is a free, open-source code editor developed by Microsoft for Windows, Linux, and macOS that is completely customizable. You can read more about it on the official site and on the “Why Visual Studio Code?” page. I thought Visual Studio code was awesome before the I attended the PowerShell Summit, and I think it’s even more awesome now.

One last note before I get started. If you are reading this article it’s probably safe for me to assume that you use PowerShell and/or Visual Studio Code. If either of those things are true, you should seriously look into attending the PowerShell + DevOps Summit in 2018. This year was the 3rd year I have attended and every year it gets better. The summit is intentionally kept small, so tickets go fast. To get notified about the 2018 Summit you can sign up for a mailing list or you can follow the official Twitter account @PSHSummit.

Alright, let’s get down to business.

I knew that VS Code added PowerShell language support a while ago, what I didn’t know is that you could set the default language for VSCode to PowerShell. Here’s how you do it:

  1. Use Ctrl + Shift + P to bring up the Command Palette (you should get used to doing this).
  2. Type User Settings and click on Preferences: Open User Settings
  3. In the box on the right hand side type “files.defaultlanguage”: “powershell”
  4. Save it. Congratulations your default language for all new files is now PowerShell!



The next thing I learned is that VS Code can handle automatic code formatting for PowerShell.  Don’t believe me?  Here is some crappy unformatted code:

To have VS Code do automatic formatting you can either right click anywhere in the document and then select Format Document or you can highlight the code you want to format, right click, and select Format Selection.  Either way you end up with formatted text.

You can also completely customize your own code formatting if you don’t like the default settings.  Go into your User Settings again (just like you did to set your default language) and type “codeformat” by the time you type all of that you should see it display the available code formatting options:

Select any of those and then set the appropriate option.

Since there are squiggly lines in the code example above, now is a good time to mention the next thing that I learned.  When writing PowerShell in VS Code, behind the scenes it is using PSScriptAnalyzer to analyze the code and make recommendations.  There are the different ways to see the problems and recommendations in VS Code.  The first way is if your cursor is on a line with a squiggly, hover over the squiggly line to see the recommendation.

Also, to the left of the code you will see a little light bulb icon.  Left clicking that icon will also give you some information (similar to what hovering over the squiggly line will get you).

Finally, you can view all the “problems” that PSScriptAnalyzer has detected in one place in the output pane.  At the bottom of your screen you should have an area that looks similar to this.  If you don’t, you can enable it by going to View -> Output, or Ctrl+Shift+U.

If you click on the Problems tab, you will see all your “problems” in one place.

Next up, is creating a Visual Studio Code profile, which works exactly like a PowerShell profile.  You will seen in the screenshot showing the output window that my prompt is a $ (because PowerShell is money friend!).  How did I do that?

  1. Browse to your user documents folder and then to the WindowsPowerShell folder (C:\users\jacob\documents\WindowsPowerShell)
  2. Create a file called Microsoft.VSCode_profile.ps1
    1. Clearly you can do this through PowerShell
    2. Put whatever you want VS Code to load into your profile
  3. Reload VS Code by typing Ctrl+Shift+P and then Reload
  4. If you type $profile in the VS Code terminal window you will see an output similar to this

Next up is themes  This seems pretty obvious in retrospect but there are all kinds of themes out there you can use to customize your editor experience.  To browse through the available themes in VS Code click the Extensions icon in the left hand toolbar (square icon at the bottom) and in the search extensions in marketplace box just type Themes.  This will give you a giant list of themes but no sorting.  What about most installed themes?  Type themes @sort:installs .  What about most popular?  Type themes @sort:rating-desc .  The screenshots in this blog are from the built-in Dark theme (highlighted in the screenshot below).  You can view all the available color themes by opening up the command palette (Crtl+Shift+P), type Themes and then select Preferences: Color Theme and then browse through the available options using the up and down arrows.  Once you install a theme extension and reload VS Code it will populate into this list.

Extensions work in exactly the same way.  In the search box on the Extensions section you can type @sort:installs to see the most installed extensions (PowerShell is currently #9).  The extensions I have installed are shown below.  Azure Resource Manager Tools gets you intellisense and snippets for writing ARM Templates in VS Code, Settings Sync allows you to sync your VS Code settings across devices using GitHub, Visual Studio Code Git Hub Support allows you to save and commit code changes to GitHub (which is an entire blog post on its own) and vscode-icons gets you cool icons in the explorer window.

Finally, here are some other user settings you can set that I also learned about at the PowerShell Summit:

  1. editor.fontfamily
  2. editor.fontsize
  3. extensions.autoupdate
  4. editor.formatonsave
  5. editor.formatonpaste
  6. terminal.integrated.fontsize
  7. terminal.integrated.fontfamily

You can read about some more tips and tricks from the VS Code GitHub page.

What are some of your favorite VS Code tips and tricks?