There are two editions of PowerShell:
- Desktop Edition: This version uses the full .NET CLR. It is primarily used in Windows Desktop and Core Server environments.
- Core Edition: This version uses .NET Core. It is primarily used in Windows IoT and Nano Server environments.
The $PSVersionTable variable holds the information for the currently used PSVersion and PSEdition.
The same terminology can be observed with Windows PowerShell versus PowerShell Core:
- Windows PowerShell is built on top of the .NET Framework:
- Versions 1 to 5.1
- Available on Windows and Windows Server only
- Delivered as a built-in component and via WMF
- Built on top of the .NET Framework (also known as FullCLR)
- $PSVersionTable.PSEdition is set to Desktop
- PowerShell Core is built on top of .NET Core:
- Version 6++ (and Nano Server/Windows 10 IoT)
- Available on Windows, macOS, and Linux
- Delivered via MSI, ZIP, or PKG (macOS)
- Built on top of the current .NET Core version (also known as CoreCLR)
- $PSVersionTable.PSEdition is set to Core
PowerShell Core is available in Windows Server 2016 Nano Server and Windows 10 IoT, but also in PowerShell Core 6 and newer versions.
This information brings us to the following overview: