What does the name PowerShell refer to?
PowerShell is a command-line shell and scripting language that is built on top of the .NET Framework. It can be used to automate tasks, deal with structured data (e.g. JSON, CSV, XML, etc.), interact with REST APIs, and more.
Powershell is available in two editions: Desktop and Core. The Desktop edition is available on Windows 7/8/10/11, Windows Server 2019/2022, and in later versions of Windows. The Core edition is cross-platform and is available on Windows, macOS, and Linux. 1
Key differences between PowerShell Desktop and PowerShell Core
The following table shows the differences between PowerShell Desktop and PowerShell Core in more detail.
Property | PowerShell Desktop | PowerShell Core |
---|---|---|
Cross-platform | No | Yes |
Open-source | No | Yes, available on GitHub |
Availability | Windows 7/8/10/11, Windows Server | Windows, macOS, Linux, Windows Nano Server and Windows IoT |
Other name(s) | Windows PowerShell | - |
Versions 2 (as of Oct 2024) | 1.0, 2.0, 3.0, 4.0, 5.0, 5.1 | 6.0, 6.1, 6.2, 7.0, 7.1, 7.2, 7.3, 7.4 |
Built on top of | .NET Framework | .NET Core |
Note that if someone refers to PowerShell 6.0, 7.0, 7.1, or 7.2, they are referring to PowerShell Core. Similarly, if someone refers to Windows PowerShell 5.0 or 5.1, they are referring to PowerShell Desktop.
In short, PowerShell Desktop is the Windows-only version of PowerShell. It is built on top of the .NET Framework and is available on Windows 7 (onwards) and on Windows Server. It is also known as Windows PowerShell.
PowerShell Core is the cross-platform version of PowerShell. It is built on top of .NET Core and is available on Windows, macOS, and Linux.
.NET Framework vs .NET Core
PowerShell on Linux and macOS uses .NET core, which is a subset of the full .NET Framework (available on on Microsoft Windows). Understanding this is crucial because PowerShell provides direct access to the underlying framework types and methods. As a result, scripts that run on Windows may not run on non-Windows platforms because of the differences in the underlying frameworks.
Which version of PowerShell do you have?
Windows PowerShell comes pre-installed on Windows OS, while PowerShell Core is cross-platform tool which can be installed on Windows, Linux, and macOS.
To check which edition of PowerShell you’re using, simply enter the following command in your PowerShell terminal:
$PSVersionTable
This will display the version, edition, and other information about your PowerShell. For example, if you’re using PowerShell Desktop on Windows 10/11, you’ll see something like this:
Name Value
---- -----
PSVersion 5.1.19041.1320
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
What’s the difference between Windows PowerShell 5.1 and PowerShell 7.x ?
Windows PowerShell 5.1 is based on the .NET Framework v4.5. With the release of PowerShell 6.0, PowerShell transitioned to an open-source cross-platform (Windows, macOS, and Linux) project built on .NET Core 2.0.
The most notable differences are in the availability of PowerShell cmdlets between Windows and non-Windows platforms and the changes that arise from the differences between the .NET Framework and .NET Core. 3
Further, each new release of PowerShell is built on a newer version of .NET, like:
- PowerShell 6.0 - Built on .NET Core 2.0
- PowerShell 6.1 - Built on .NET Core 2.1
- PowerShell 7.1 - Built on .NET 5.0
- PowerShell 7.5 - Built on .NET 9.0
What can you do to clear up confusion about PowerShell versions and editions?
It’s important to be specific about the version and edition of PowerShell you are using when writing, talking, or posting about it on social media or forums. This will help others understand what you are talking about and avoid confusion.
- If you are on Linux or macOS, use the term ‘PowerShell Core’ instead of PowerShell.
- If you are using the default PowerShell on your Windows machine, use the term ‘Windows PowerShell’ (or PowerShell Desktop) instead of PowerShell.