Microsoft announced this week that it has made the initial release of PowerShell Core available on Windows, macOS, and Linux. Confusingly, this first release is called PowerShell 6.0.
“This is the biggest and most important change we’ve ever made to PowerShell!” Microsoft Technical Fellow and PowerShell creator Jeffrey Snover tweeted.
Put simply, PowerShell Core is a new, cross-platform version of PowerShell that is built on .NET Core instead of the .NET Framework. So with this release, there are now two PowerShell editions: The classic Windows PowerShell, formerly codenamed Monad, that we’ve been using on Windows for the past decade and 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. There are also experimental versions available for both Windows 10 on ARM and Raspian, the Raspberry Pi-based system.
And on that note, PowerShell Core is the modern successor to Windows PowerShell. That prior Windows-only release ends at version 5.1, which explains why PowerShell Core starts at version 6.0.
“There are currently no plans to introduce new functionality to Windows PowerShell,” Microsoft’s Joey Aiello writes. “You can count on it as a stable platform for your existing workloads.”
Microsoft also explains which Windows PowerShell features are missing in 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,” Aiello explains. “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.”
PowerShell Workflows, PowerShell Snap-ins, Windows Management Instrumentation (WMI) 1.0 cmdlets, and support for Desired State Configuration (DSC) resource execution are among the missing in action in PowerShell Core 6.0, Microsoft says.