News

Microsoft Transitioning Windows PowerShell 6.0 into PowerShell Core

Microsoft recently explained its Windows PowerShell roadmap plans, which will increasingly focus on PowerShell Core, going forward.

PowerShell Core has capabilities for managing "the basic features" of the Windows PowerShell scripting language, according to an MSDN article, which described it as a "module." However, PowerShell Core essentially will be supplanting Windows PowerShell 6.0. The PowerShell team explained some of these details last week in an announcement of its PowerShell 6.0 roadmap plans.

The most recent version of Windows PowerShell for use in production environments is Windows PowerShell 5.1, which was released as two editions, according to Wikipedia's history. There was a Desktop edition for use on Windows systems. There also was a Core edition that was designed for the .NET Core. The PowerShell Core edition was bundled with Nano Server, the minimal footprint configuration option of Windows Server 2016.

At this point, it might be expected that Microsoft would be planning to release Windows PowerShell 6.0 as the successor to Windows PowerShell 5.1. Windows PowerShell 6.0 actually was released in beta form last year, according to a PowerShell team blog post and appeared as open source code. However, Windows PowerShell 6.0 instead will get subsumed by PowerShell Core, which is currently at the beta stage, having been released last month.

Here's how the team explained that change in plans:

The next release of PowerShell (6.0) was open-sourced last year and is currently in beta. However, it is PowerShell Core designed to run cross-platform on Windows, Mac, and Linux. PowerShell Core runs on top of .NET Core, a cross-platform, open-source version of the code base powering most of the Windows world. This version of PowerShell will be different than the Windows PowerShell edition you see built into Windows today.

Microsoft is now referring to "PowerShell Core" as "PowerShell Core 6.0." The nomenclature is confusing, since few people recall even a PowerShell Core 1.0 release. The important part, though, is that PowerShell 6.0 is going away, replaced by PowerShell Core.

This month, Joey Aiello, a program manager on the PowerShell team, responded to direct question in that regard, indicating that PowerShell 6.0 won't get developed in the near future:

The goal with PowerShell Core 6.0 and all the compatibility shims is to supplant the need for Windows PowerShell 6.0 while converging the ecosystem on PowerShell Core. So no, we currently don't have any plans to do a Windows PowerShell 6.0.

Aiello explained a bit about the editions of PowerShell. Windows PowerShell is built on top of the .NET Framework and goes by the "Desktop" edition name. It's built into Windows and Windows Server.

PowerShell Core is built on top of .NET Core and goes by the "Core" edition name. It's cross platform, and available for Linux, Mac OS and Windows.

Right now, Microsoft is trying to make PowerShell Core "as compatible with Windows PowerShell as technically possible," Aiello indicated. It's doing that by standardizing it on .NET Standard 2.0, a set of common APIs for the .NET platform.

With .NET Standard, Microsoft is creating one base class library for developers. They won't have to deal with the "three major flavors of .NET," said Immo Landwerth, a program manager on the .NET team. He explained in a 2016 blog post that Microsoft had forked the .NET code for various purposes "quite a bit over the years." It was done to support different operating system platforms, but the forking caused problems for developers. Microsoft expects that .NET Standard will make it easier for developers to share and reuse code between platforms, and it is targeting its compatibility efforts via .NET Standard 2.0, Landwerth added.

The drive toward compatibility is ongoing. Aiello noted that "most of the modules that ship as part of Windows (e.g. DnsClient, Hyper-V, NetTCPIP, Storage, etc.) have not been explicitly ported to .NET Core yet."

At this point, Microsoft wants testers to give feedback on latest beta release of PowerShell Core (currently at version 6.0, beta 4), which is housed at this GitHub repository. Verification that existing scripts will work with it will help advance PowerShell Core more toward production release, Aiello indicated. Microsoft is targeting the release of PowerShell Core 6.0 by "the end of the year."

As for Windows PowerShell 5.1, it'll be a "supported component of Windows 10 and Windows Server 2016," Aiello promised. However, it'll "likely not receive major feature updates or lower-priority bug fixes" over time, he added.