PowerShell 5.x is soon being replaced. Once the official version of PowerShell Core 6.0 is deployed into production, we can get more details about the future.

When Microsoft introduced Bash on Windows, it triggered a huge debate about whether the company would continue with PowerShell. However, Microsoft announced that although Bash and PowerShell differ in their focus and design, both are here to stay. Now, Windows PowerShell has another competitor in the form of PowerShell Core. In a recent blog post, Microsoft disclosed the roadmap of PowerShell 6.0, announcing that PowerShell 5.x would not receive any new features or updates, and it would only get critical fixes.

According to Joey Aiello, program manager and committee member of PowerShell 6.0, “Windows PowerShell 5.1, much like .NET Framework 4.x, will continue to be a built-in, supported component of Windows 10 and Windows Server 2016. However, it will likely not receive major feature updates or lower-priority bug fixes.”

Joey also revealed plans surrounding the new PowerShell Core 6.0. “It is our strong desire to ship a high-quality PowerShell Core 6.0 by the end of the year that you can feel confident about deploying in production. When this happens, we also plan on having more details about how you can use PowerShell Core 6.0 with official support from Microsoft.”

So, is this the end of the road for Windows PowerShell?

Given the announcement above, it’s clear that Microsoft’s focus is on its open-source product, PowerShell Core. This means Windows PowerShell users will have no option but to install PowerShell Core to get the latest upgrades.

The Current State of Windows PowerShell

Based on the .NET Framework, PowerShell is a task automation and configuration management tool. It offers a command-line interface (CLI) and a scripting language, and it’s currently available in two versions:

  1. Windows PowerShell is built on top of the .NET Framework 5.1.

    It is only available on Windows and is a built-in component of Windows and Windows Server Edition.
  2. PowerShell Core is built on .NET Core.

    It is an open-source, cross-platform solution available on Windows, Linux, and macOS.

In June of 2017, Microsoft released a beta version of Windows PowerShell 6.0. At the same time, the company has named its open-source version PowerShell Core 6.0. Considering that PowerShell Core doesn’t have an earlier version, this implies that PowerShell Core will eventually replace Windows PowerShell 6.0. With that in mind, Microsoft is trying to make PowerShell Core as compatible with Windows PowerShell as possible. Using .NET Standard 2.0, which provides binary compatibility with .NET assemblies, Windows PowerShell users can work seamlessly with the .NET Core.

To get started with the beta version of PowerShell Core, you should install and configure the following three items:

PowerShell Core 6 Beta

You can download it here: http://github.com/powershell/powershell

OpenSSH

You can download it here: https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

If you already have Open SSH on your Linux system, you should edit the sshd-config file for PowerShell remoting support. You can check this link to know how to edit the sshd-config file:

Text Editor

You can use your favorite text editor to write PowerShell scripts. If you want to use Visual Studio Code, you can download it here: https://code.visualstudio.com/

What Does This Mean For PowerShell Users?

Windows PowerShell is only available for Windows systems as it runs on top of the .NET Framework. However, Microsoft has transformed it into a cross-platform solution so it can be ported to Linux and MacOS systems. At the same time, this will standardize implementation across all platforms, but Windows PowerShell users should consider certain aspects.

Firstly, PowerShell Core runs on .NET Core, which is a subset of the .NET Framework. This means you won’t get all the capabilities of Windows PowerShell, such as the workflows, Windows Forms, Windows Presentation Foundation, etc. It’s also worth mentioning that the developers haven’t ported most of the cmdlets to Core yet. So, you can continue to use the modules if you install the PowerShell Core beta version on a Windows 10 machine, owing to the binary compatibility via .NET Standard 2.0. However, when you install it on Linux, you’ll only get limited modules and functionality.

Secondly, the future of PowerShell Web Access is uncertain because it only runs on IIS. For other operating systems, such as macOS or Linux, Microsoft Web Services are unavailable. Thirdly, Windows PowerShell users will miss some of its useful features—including PSEdit and remote tabs—since the graphical development interface known as PowerShell ISE is not available with PowerShell Core. Instead, Microsoft is pushing Visual Studio Code (VSC) since it’s based on web technologies and supports multiple platforms.

What About the Desired State Configuration (DSC)?

In order to fit into the PowerShell Core cross-platform solution, Microsoft is reshaping its Desired State Configuration product too. Currently, DSC is offered in two modules: Windows PowerShell DSC is the Windows version, while DSC for Linux is the aptly named Linux version. Both modules are maintained in separate code bases. With PowerShell Core, Microsoft integrated both versions into a single solution in the form of “DSC Core.” It is expected to eventually replace the two earlier versions.

According to the PowerShell Team Blog, DSC Core supports Windows and Linux and has no dependency on WMI and WMF. However, you will need PowerShell Core and .NET Core in order to run DSC Core. This Xcopy-able package supports resources written in Python, C, C++, and PowerShell. It minimizes dependencies on other technologies and scales across cloud platforms. At the same time, it is compatible with Windows PowerShell DSC via the .NET Standard 2.0. To manage the configuration of Azure systems, Microsoft is planning to release an Azure extension and Azure Automation DSC pull server.

Currently, Microsoft is inviting feedback on the latest beta 4 release of PowerShell Core, which is housed at GitHub. While the product is expected to be live by the end of the year, any feedback and updates we can provide will help advance its release. Once the official version of PowerShell Core 6.0 is deployed into production, we can get more details about its future. But at the moment, based on the available information, it seems to be the end of the road for Windows PowerShell.