Once upon a time back in 2006, PowerShell was introduced to the world. The scripting language thought up by Jeffrey Snover and distributed by Microsoft with Windows would soon turn into a ubiquitous part of IT automation and scripting, replacing the aging VBScript as the scripting language of choice.
Throughout PowerShell's inception, and up to PowerShell 5.0, PowerShell was technically called Windows PowerShell. It was, as you might have guessed, only available on Windows. Windows PowerShell ran on top of the Windows .NET Framework and was bundled as part of the Windows Management Framework package which set a hard requirement for the language until early 2017 when PowerShell 5.1 came along with the concept of a "Core" version.
Windows PowerShell "Core" 5.1 ran on .NET Core instead of the full .NET Framework and was bundled with Windows Server 2016 Nano Server. After PowerShell 5.1, PowerShell would never be the same. With the release of PowerShell in 2018, Windows PowerShell was no longer actively developed and the new PowerShell, PowerShell Core 6.0 was introduced.
PowerShell Core was the new generation of PowerShell and still is. Two major announcements came from the PowerShell Core announcement; PowerShell was now open source and cross-platform meaning it could now run on Linux, MacOS, and Windows! PowerShell was no longer relegated to Windows systems, but developers could now write scripts to run on just about any operating system in their environment.
PowerShell now comes in two forms; Windows PowerShell and PowerShell Core. While admins scramble to figure out how they're going to migrate to PowerShell Core, Microsoft has developed Core to run in parallel with Windows PowerShell making the transition as smooth as possible. However, PowerShell Core doesn't have near feature-parity with Windows PowerShell yet. Many commands available on Windows PowerShell aren't available in PowerShell Core but recently, Jim Birley announced PowerShell Core 7.0 would be up to 90% of where Windows PowerShell is.
Another notable change is that PowerShell's binary powershell.exe is now pwsh.exe, making the ability for side-by-side installations. Also, PowerShell Core has native Docker support. This allows PowerShell to understand Docker containers without the need for add-on modules natively.
A significant change that many administrators were clamoring for was also SSH. Microsoft has been working on their PowerShell/SSH implementation for some time, but now in PowerShell Core 6.0, the familiar PowerShell Remoting Protocol (PSRP) finally supports SSH as well as the traditional WinRm-based implementation. This means that you can use cmdlets like Enter-PSSession and New-PSSession and authenticate using SSH. Remote sessions will work just fine as long as you register PowerShell as a subsystem with the destination OpenSSH-based server.
As of today, PowerShell Core is now on version 6.2 with no major feature upgrades and seems to be on a maintenance cycle. The vision of Jeffrey Snover's Monad Manifesto has been delivered, and since PowerShell is now open source, Microsoft is relying on the community to fix bugs and add new features to PowerShell.
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.
Let our experts teach you how to use Sitefinity's best-in-class features to deliver compelling digital experiences.Learn More
Subscribe to get all the news, info and tutorials you need to build better business apps and sites
You can also ask us not to share your Personal Information to third parties here: Do Not Sell or Share My Info
We see that you have already chosen to receive marketing materials from us. If you wish to change this at any time you may do so by clicking here.
Thank you for your continued interest in Progress. Based on either your previous activity on our websites or our ongoing relationship, we will keep you updated on our products, solutions, services, company news and events. If you decide that you want to be removed from our mailing lists at any time, you can change your contact preferences by clicking here.