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.
Download PowerShell Core for Windows or for macOS or Linux.
<blockquote><a href="#237453"><em>In reply to Jeremy_Petzold:</em></a></blockquote><p>The great thing about the early days of a tech innovation is that we can pretend it will be better because we haven't yet experienced the inevitable problems and limitations. </p>
<p>“There are currently no plans to introduce new functionality to Windows PowerShell,”</p><p><br></p><p>So once again MS doesn't want improve tools for their primary developer base to chase a new market of developers who interest is a dubious speculation. Because that strategy worked for them so well in the past?</p>
<blockquote><a href="#237452"><em>In reply to Jeremy_Petzold:</em></a></blockquote><p>15 years is an eternity in tech. Besides, what's Microsoft's business case for .NET core on non-Windows platforms? Where's the revenue stream? Historically MS has never used their non-native tools to build any of their major applications. Not VB, not MFC, not .NET and so far, not UWP. Why would Linux devs who mostly hate Windows and Microsoft, embrace it?</p><p><br></p><p>I think MS' previous business oriented strategy has been replaced with a kind of "Let's do what all the cool kids are doing" approach. Unfortunately the "cool kids" don't really want to play with Microsoft.</p>