PowerShell History and Current State
- PS1 – Should you learn PowerShell?
- Learn and use PowerShell with just three commands
- Working with the PowerShell Pipeline
- PowerShell History and Current State
- Getting setup for PowerShell Development
- Working With PowerShell Variables
- Taking Control with PowerShell Logic
- PowerShell Input & Output
- PowerShell Errors and Exceptions Handling
- PowerShell Remoting
- PowerShell Scripts
- PowerShell Functions
- Manage Cloud with PowerShell
The State of the Shell
Having a pulse on the current and future state of the language is beneficial in your PowerShell journey. It also helps to know a little PowerShell history. PowerShell is evolving rapidly. Knowing how to navigate the PowerShell landscape will help you make good decisions as you dive deeper into the language.
This post will briefly cover some PowerShell history. It will investigate some of the differences between versions, and what that means for you. Finally, we’ll cover where PowerShell is headed in the future.
Video
If you prefer video format over written documentation I discuss this topic in the following TechThoughts video:
PowerShell History

The Monad Manifesto
Jefferey Snover invented PowerShell in 2002 and proposed the idea in the Monad Manifesto. While not required reading, I encourage you to look it over. It provides a lot of insight into the creation of PowerShell. With additional design help from Bruce Payette and James Truher, PowerShell saw it’s initial 1.0 release in 2006.
A New Shell for Windows
PowerShell from the beginning has aimed to make IT Admins lives easier. It’s capabilities and ease of use quickly made it the tool of choice for many.
Initial versions were coupled directly to Windows releases. Later versions were released as part of the WMF (Windows Management Framework).
Each new PowerShell version continued to add more cmdlets, features, and functionality. This means that the PowerShell version you are running may have different capabilities than another version. Familiarize yourself with the version that is currently deployed in your environment. (Reference the PowerShell Version Information at the bottom of this article for more details)
# determine what version of PowerShell you are running with the following: $PSVersionTable # The PSVersion number is the version. you can get it specifically like this: $PSVersionTable.PSVersion
PowerShell for all
PowerShell 6.0 was released in January 2018. With it came some of the biggest changes PowerShell had seen to date:
- PowerShell is now free, and open source
- This means you can visit the PowerShell repository on GitHub. Open issues, view the code base, interact with the community, and even contribute to PowerShell!
- Linux and MacOS support added
- Now that PowerShell is cross-platform, admins can learn one language and be effective on several platforms.
- Install PowerShell on Linux today!
- Now that PowerShell is cross-platform, admins can learn one language and be effective on several platforms.
- PowerShell 5.1 regulated to security fixes only
PowerShell 5.1 vs PowerShell 6.x
There was a lot of confusion in the community concerning version 6 of PowerShell. It’s important that you understand how PowerShell 5.1 and PowerShell 6+ relate to one another.
For Linux and MacOS users, there is only choice: PowerShell 6 or higher is a requirement. For Windows users though, PowerShell had started with 1.0 and had matured all the way to 5.1. In fact, for the majority of modern Windows environments, 5.1 is fairly standard. PowerShell 6 didn’t really add much net new functionality for Windows admins. In fact, it actually had less functionality than 5.1.
The PowerShell 6 release aimed at achieving some of the above mentioned points. It’s goal wasn’t to radically boost Windows capabilities. 5.1 was already doing a good job at that, and will continue to do so.
PowerShell 5.1 will receive security fixes only moving forward. While PowerShell 6 does lag in Windows capability, it will continue to advance on both Linux and Windows. Eventually it will eclipse 5.1’s Windows capabilities. In the interim, you can run both on a system without issue.
Running 5.1 and 6.x side-by-side
On a Windows device you can see this behavior in action by running both PowerShell 5.1 and PowerShell 6+ side-by-side. Yes, you can run both on the same Windows system without issue. Simply download the PowerShell 6.2.1 release and install to follow along.
- PowerShell 5.1 install path:
- C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- PowerShell 6+ install path:
- C:\Program Files\PowerShell\6\pwsh.exe
Because the two versions have different install paths and exe names, you can run both at the same time. Try the following code to see the differences in the number of cmdlets between the two versions:
# in a 5.1 window count the number of cmdlets: Get-Command | Measure # now try the same thing in a 6+ console window Get-Command | Measure
On a Windows system you can add additional functionality to PowerShell 6+ by installing the WindowsCompatibility Module.
# in a 6+ console window run the following: Install-Module WindowsCompatibility -Scope CurrentUser
PowerShell Today
Today, Powershell is a powerful tool for admins/engineers running nearly any technology stack. The PowerShell team continues to remain committed to cross platform and open source. The PowerShell community is also thriving and growing.
Windows | Linux | Hyper-V | VMWare | AWS | Azure |
---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Supported | Supported | Supported | Supported | Supported | Supported |
At the time of this writing (mid 2019) Linux adoption of PowerShell 6+ is soaring. The majority of Windows environments continue to stay on 5.1 where it will likely continue to serve Windows admins for some time. PowerShell 6+ continues to see improvements and will catch up. In the interim, the WindowsCompatibility Module can help Windows admins transition easily to 6+.
PowerShell Tomorrow
PowerShell continues to evolve in exciting new ways! Recently PowerShell program manager Steve Lee announced the next release will be PowerShell 7! He followed up shortly with the PowerShell 7 roadmap.
The PowerShell 7 release is set to align around .NET Core 3 and aims to become a viable replacement on Windows for 5.1. That means we can likely expect a lot of Windows improvements in PowerShell 7.
There are also many RFCs (Request for Comments) open regarding the future of PowerShell. These threads are where people discuss proposed changes. You could join in on the conversation and help shape the future of PowerShell!
Other ways to stay current with the world of PowerShell:
- Make sure to also check out the PowerShell blog for updated announcements.
- Stop by /r/PowerShell to see what the community is currently discussing related to PowerShell!
PowerShell Version Information
Version | Release Date | Released To | Windows | Linux |
---|---|---|---|---|
7 | TBD | TBD | TBD | TBD |
6.2 | May 2019 | Standalone Installer | Server 2019 Server 2016 Windows 10 Server 2012R2 Windows 8.1 Server 2012 Windows 7 SP1 Server 2008R2 SP1 | Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 18.10 Debian 9 CentOS 7 RHEL 7 openSUSE 42.3 openSUSE Leap 15 Fedora 27 Fedora 28 Arch Linux |
6.1 | Nov 2018 | Standalone Installer | Server 2019 Server 2016 Windows 10 Server 2012R2 Windows 8.1 Server 2012 Windows 7 SP1 Server 2008R2 SP1 | Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 18.10 Debian 9 CentOS 7 RHEL 7 openSUSE 42.3 openSUSE Leap 15 Fedora 27 Fedora 28 Arch Linux |
6.0 | Jan 2018 | Standalone Installer | Server 2016 Windows 10 Server 2012R2 Windows 8.1 Server 2012 Windows 7 SP1 Server 2008R2 SP1 | macOS 10.12+ RHEL 7+ CentOS 7+ Fedora 25, 26 Debian 8.7+ Ubuntu 14.04, 16.04, 17.04 openSUSE 42.2+ |
5.1 | Jan 2017 | Windows 10 Anniversary Server 2016 | Windows 10 Server 2016 Windows 8.1 Server 2012R2 Server 2012 Server 2008R2 SP1 Windows 7 SP1 | N/A |
5.0 | Feb 2016 | Windows 10 | Windows 10 Windows 8.1 Server 2012R2 Server 2012 Windows 7 SP1 | N/A |
4.0 | Oct 2013 | Windows 8.1 Server 2012R2 | Windows 8.1 Server 2012R2 Server 2012 Windows 7 SP1 Server 2008R2 SP1 | N/A |
3.0 | Sep 2012 | Windows 8 Server 2012 | Windows 8 Server 2012 Windows 7 SP1 Server 2008 SP1 Server 2008R2 SP1 | N/A |
2.0 | Oct 2009 | Windows 7 Server 2008R2 | Windows 7 Server 2008R2 XP SP3 Server 2003 SP2 Vista SP1 | N/A |
1.0 | Nov 2006 | XP SP2 Server 2003 SP1 Vista | XP SP2 XP SP3 Server 2003 SP1 Server 2003 SP2 Server 2003R2 Vista Vista SP2 Server 2008 | N/A |
thank you