When Microsoft open-sourced PowerShell and announced its availability for other operating systems, it was not yet foreseeable what this would mean for Windows PowerShell. It is now clear the future belongs to PowerShell Core on all operating systems. Users working on Windows will probably have to sacrifice some features.

Thus, the new strategy means that Microsoft is porting the command-line interface (CLI) and the scripting environment to Linux and macOS. Moreover, they want a standardized implementation on all platforms, including Windows.

PowerShell 5.1 is the last Windows version ^

In a blog post, the PowerShell team explained what the new cross-platform ambitions mean for Windows. The core message (pun intended) is that Microsoft will no longer develop Windows PowerShell, which today is included in Windows 10 and Windows Server 2016.

Microsoft will only provide bug fixes but won't add any new features. According to the roadmap, Windows PowerShell 5.1 will continue to be a component of the current operating system. However, Microsoft has made no long-term statements with regard to the successors of Windows 10 and Server 2016.

.NET Core as the basis ^

You probably know that Windows PowerShell is based on the .NET Framework that is only available for Windows. Hence, for a portable PowerShell Microsoft is developing .NET Core that implements the .NET Standard (for further information read the .NET Standard FAQ). With the support of the open-source community, they have been porting .NET Core to operating systems other than Windows.

Because .NET Core is a subset of the .NET Framework, it lacks several technologies. For instance, the Windows Presentation Foundation (WPF), Windows Forms, and Windows Workflow are missing (more information: Choosing between .NET Core and .NET Framework). Accordingly, PowerShell 6.0 doesn't support Workflows.

Module compatibility ^

If you install the current beta 6 on Windows 10, it will notify you on launch that Windows PowerShell has added the module path.

The reason for this is that the developers haven't ported most cmdlets to Core yet. However, because of the binary compatibility with existing .NET assemblies, you should be able to continue using your modules.

If you install PowerShell Core beta 6 on Ubuntu, you will notice that the number of modules included is quite limited. Most of the cmdlets belong to the core modules Management, Security, and Utility. On board is PowerShellGet, which is particularly important because .NET Core consists of a collection of NuGet packages.

Uncertain future for PowerShell Web Access ^

PowerShell's standardization on multiple platforms might leave behind additional Windows-specific features. For instance, the future of PowerShell Web Access is unclear considering that it only runs on IIS and that Microsoft's web services are unavailable for other operating systems.

Regarding PowerShell remoting, it appears as if OpenSSH might rise to be the preferred method for remote connections.

PowerShell ISE deprecated ^

In addition, visible changes are taking shape with respect to the tools included. PowerShell ISE, the graphical development environment, is no longer available for PowerShell 6 Core. Microsoft will promote Visual Studio Code (VSC) instead, including the PowerShell plug-in. This tool is based on web technologies and also available for multiple platforms.

As a PowerShell-specific development environment, ISE offers a couple of useful features, such as remote tabs or PSEdit, that allow you to edit remote files. The generic VSC does not offer comparable functionality.

At the time of this writing, PowerShell Core is available as beta 6. Microsoft plans to release the final version at the end of the year. You can install it side by side with Windows PowerShell.

Join the 4sysops PowerShell group!

Your question was not answered? Ask in the forum!







