PowerShell History and Current State
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
January 2018 saw the release of PowerShell 6.0. 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 Higher Versions of PowerShell
There was a lot of confusion in the community concerning version new versions of PowerShell. It’s important that you understand how PowerShell 5.1 and newer versions relate to one another.
With the release of PowerShell 6.0 PowerShell moved to .NET Core. This refactor was actually a bit of a step backwards in that there were actually less cmdlets, and less functionality in 6.0 then there had been in previous versions. It took the PowerShell team until the release of PowerShell 7 before full cross-platform functionality with original levels of functionality were realized.
For Linux and MacOS users, there is only choice: PowerShell 6 or higher is a requirement. For Windows users 5.1 still ships native with Windows today. While it lacks modern features, many Windows users find it “good enough” for many use cases. This has led to an interesting situation where modern versions of PowerShell often see higher adoption rates with Linux users. Many Windows environments still leverage 5.1 “because it’s there”.
PowerShell 5.1 will receive security fixes only moving forward. This means you can’t take advantages of new capabilities in modern version of PowerShell. Parallel actions, improved web cmdlets, new operators, and improved error investigation are just some of the enhancements that you’ll be able to engage with higher versions.
Running 5.1 and new PowerShell versions 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 latest PowerShell 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\X\pwsh.exe
- X represents the version number of PowerShell. For instance, if you install PowerShell 7, this will be a 7.
- C:\Program Files\PowerShell\X\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
Even More PowerShell History
If you want to learn even more about PowerShell history I’d suggest checking out Shell of an Idea: The Untold History of PowerShell:
PowerShell Today
Today, PowerShell is a powerful tool for admins/engineers/developers 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 | Oracle |
---|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Windows Supported | Linux Supported | Hyper-V Supported | VMWare Supported | AWS Supported | Azure Supported | Oracle Supported |
At the time of this writing 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. The PowerShell team continues to enhance and provide additional value which should drive environments to upgrade past 5.1.
PowerShell Tomorrow
PowerShell continues to evolve in exciting new ways! Recently PowerShell program manager Steve Lee announced the PowerShell and OpenSSH team investments for 2022.
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!
- Come join the PowerShell conversation on PowerShell Discord
PowerShell Version Information
Version | Release Date | Released To | Windows | Linux | Cmdlets |
---|---|---|---|---|---|
7 | March 2020 | Standalone Installer | Server 2019 Server 2016 Server 2012R2 Server 2012 Windows 10 Windows 8.1 | Ubuntu LTS 16.04+ Alpine Linux 3.8+ Debian 9 Fedora 30+ CentOS 7 RHEL 7 macOS 10.13+ | 1507 |
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 | 1,300 |
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 | 1,000 |
2.0 | Oct 2009 | Windows 7 Server 2008R2 | Windows 7 Server 2008R2 XP SP3 Server 2003 SP2 Vista SP1 | N/A | 632 |
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 | 129 |
- 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
- PowerShell Modules
thank you