Microsoft has announced the general availability of PowerShell Core 6.0, a new edition of PowerShell. Version 6.0 supports various platforms (Windows, macOS, and Linux), is open-sourced, and built for heterogeneous environments and the hybrid cloud.
PowerShell Core 6.0 is the first Core release of PowerShell despite its moniker of 6.0, rewritten in the open-source .NET Core, and a successor to the Windows versions. Moreover, this new version received support from the open-source community through contributions in code, tests, documentation, issues, feedback, and opinions. Even today people can still contribute to PowerShell.
With regards to features support, Microsoft is not supporting every feature available in Windows PowerShell in the Core version. Features like PowerShell Workflows, Snap-ins, WMIv1 cmdlets, and executing Desired State Configuration (DSC) resources using PowerShell Core are not available. Joey Aiello from Microsoft said in a blog post on the GA release of PowerShell Core:
As part of the move to .NET Core and other operating systems, we were forced to leave behind some technologies that were being used by Windows PowerShell. In other cases, we took the opportunity of PowerShell being refactored to stop supporting lesser used technologies. Some of these technologies may eventually return to PowerShell Core, but many will not.
There are now two types of PowerShell, a popular, mature edition on top of .NET Framework (FullCLR) and one on top of .NET Core (CoreCLR). The FullCLR, with its dependency on .NET Framework, is only available on Windows, has several released versions (1.0, 2.0, 4.0, 4.0, 5.0, and 5.1), launches as powershell.exe, and is a built-in component in Windows clients and Servers. The 5.1 edition is the last one, and no new versions will be built. Microsoft is planning to provide continued support for most versions of Windows PowerShell, except for the deprecated versions 1.0 and 2.0. The support does, however, depend on the underlying Windows operating system still being a supported product.
The CoreCLR edition (6.0) is cross-platform, due to .NET Core. This edition launches as pwsh.exe on Windows, and pwsh on macOS and Linux. Besides 6.0, also a Core version 5.0/5.1 is available as part of the Microsoft Nano Server. To conclude, the Core edition differs from the Full edition. Paul Thurrott, a technology journalist, states in a blog post on PowerShell Core:
From a functional perspective, Windows PowerShell is still more powerful, in that it can take advantage of a bigger and more set of .NET capabilities that are exposed by the .NET Framework and .NET Standard. PowerShell Core relies on the newer, cleaner, but less capable .NET Core runtime, which limits its functionality to what’s available today in .NET Core and .NET Standard. But the advantage to PowerShell Core—like .NET Core—is that it’s cross-platform compatible. So any scripts that you write for PowerShell Core will work across Windows, macOS, and various newer Linux distributions, like Ubuntu, Debian, Red Hat Enterprise, and others.
A roadmap for PowerShell Core is set for the coming years, and it adopts the Microsoft Modern Lifecycle Policy, intended to keep its users up-to-date with the latest versions. The 6.x versions will receive updates approximately every six months.
Image Source: https://docs.microsoft.com/en-us/powershell/scripting/powershell-core-support?view=powershell-6
PowerShell Core source code is available on GitHub and the tool itself as a download for Windows, or as a separate download for macOS and Linux. The full documentation on Windows PowerShell and Core is available on the Microsoft Documentation site.