Every Windows user running scripts or managing automation needs to know their PowerShell version before executing anything. Running the wrong script on an incompatible version causes broken commands, failed modules, and hours of avoidable troubleshooting. This guide covers seven proven methods to check your PowerShell version on Windows 10 and Windows 11 — from a single command to the Windows Registry — so you always know exactly what you are working with.
Why Your PowerShell Version Matters
PowerShell has two separate editions running on millions of Windows machines simultaneously. Windows PowerShell, which maxes out at version 5.1, is pre-installed on every modern Windows system and built on the .NET Framework. PowerShell 7 (also called PowerShell Core) is a completely separate installation built on .NET and runs on Windows, macOS, and Linux. The two editions are not interchangeable.
Scripts written for PowerShell 7 will fail in Windows PowerShell 5.1 if they use features like ForEach-Object -Parallel, ternary operators, or null-coalescing operators — none of which exist in version 5.1. Going the other direction, some Windows-specific modules that depend on the full .NET Framework will not load in PowerShell 7. Knowing your version before running any script eliminates this guesswork entirely.
Security is the other major reason to check. Microsoft releases patches for PowerShell regularly, and older versions contain known vulnerabilities that have since been fixed. Checking which version you are running is the first step before any upgrade or compatibility audit, whether you manage one machine or an entire enterprise network.
As of early 2026, the current stable release is PowerShell 7.5.5, while the Long Term Support release is PowerShell 7.6.0. Windows PowerShell 5.1 remains the default pre-installed version on all Windows 10 and Windows 11 systems and will not be replaced by an automatic upgrade — PowerShell 7 installs alongside it as a completely separate application.
Method 1: $PSVersionTable (Most Reliable)
This is the single most reliable and universally recommended method. Open PowerShell by pressing the Windows key, typing PowerShell, and clicking the result. In the console, type the following and press Enter:
$PSVersionTable
The output is a read-only hash table showing everything about your PowerShell environment. The most important line is PSVersion, which shows your exact version number. For example, 5.1.19041.1023 means you are on Windows PowerShell 5.1. A result like 7.5.5 means you are on the current stable PowerShell 7 release.
The PSEdition row is equally important. It shows either Desktop (Windows PowerShell) or Core (PowerShell 7 or later). This single property tells you which edition is running without any ambiguity.
If you only want the version number without the full table, use:
$PSVersionTable.PSVersion
This returns just the Major, Minor, Build, and Revision numbers in a clean format. It is also the correct command to use inside scripts that need to check version compatibility before executing. For example:
if ($PSVersionTable.PSVersion.Major -lt 7) { Write-Error "This script requires PowerShell 7 or later" }
Method 2: Get-Host Command
The Get-Host cmdlet returns information about the host program running PowerShell. In most cases on a local machine, the version it shows matches your PowerShell engine version. Type this in the PowerShell console:
Get-Host
Look for the Version property in the output. You can also retrieve just the version with:
$Host.Version
There is an important limitation with this method. Get-Host does not work remotely — when run via PowerShell remoting on a remote machine, it always returns version 1.0.0.0 regardless of the actual installed version. Additionally, in some integrated terminals like Visual Studio Code, the host version may not match the PowerShell engine version. For reliable results, always prefer $PSVersionTable.PSVersion over Get-Host, especially in automated scripts or remote sessions.
Method 3: Check from Command Prompt Without Opening PowerShell
You can check the PowerShell version from the standard Windows Command Prompt without ever opening a PowerShell window. Open CMD and type:
powershell -command "$PSVersionTable.PSVersion"
This launches PowerShell silently, runs the version check, returns the result directly to your Command Prompt window, and exits. For PowerShell 7 specifically, use:
pwsh --version
The pwsh –version command returns a clean one-line result such as PowerShell 7.5.5 without entering a full session. Note that powershell –version does not work for Windows PowerShell 5.1 — the –version flag is only supported by the modern pwsh executable. This method is particularly useful when running batch scripts or working in environments where you need a quick version check without switching contexts.
Method 4: Windows Registry (No PowerShell Required)
The Windows Registry stores PowerShell version data independently of the PowerShell console. This method works even when PowerShell will not launch, making it useful for diagnostics, audits, and automated deployment checks.
To query the registry directly from Command Prompt without opening PowerShell at all, run:
reg query HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine /v PowerShellVersion
This returns the Windows PowerShell version stored in the registry. For PowerShell 7, the registry path is different:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\{GUID}
To check via the Registry Editor manually, press Win + R, type regedit, and press Enter. Navigate to HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > PowerShell > 3 > PowerShellEngine. The PowerShellVersion value on the right panel shows your installed Windows PowerShell version. The registry method is also reliable for remote audits since the values are static and will not return incorrect results like Get-Host does on remote machines.
Method 5: Check PowerShell Version on a Remote Computer
System administrators managing multiple machines need to verify PowerShell versions remotely without physically accessing each device. PowerShell’s Invoke-Command cmdlet handles this cleanly. Before using it, ensure Windows Remote Management is running on both machines by executing this on the target system as Administrator:
winrm quickconfig
Once remoting is configured, check the version on a remote machine with:
Invoke-Command -ComputerName RemotePC01 -ScriptBlock { $PSVersionTable.PSVersion } -Credential $cred
Replace RemotePC01 with the actual computer name or IP address. To create the credential object first:
$cred = Get-Credential
PowerShell will prompt for the remote system’s username and password. To check multiple machines at once, separate the names with commas. This approach is far more efficient than logging into each system individually when auditing PowerShell versions across a network.
Method 6: Check via the $PSHOME Variable
When both Windows PowerShell and PowerShell 7 are installed on the same machine, it can be unclear which one is actually running in your current session. The $PSHOME variable solves this immediately:
$PSHOME
This returns the full directory path of the PowerShell installation currently running your session. If the path contains WindowsPowerShell, you are in Windows PowerShell 5.1. If it shows PowerShell\7 or similar, you are in PowerShell 7. This is the fastest way to confirm which version is active when multiple installations exist on the same system. The ProgramData folder in Windows also contains PowerShell profile and module data relevant to which installation is active.
Method 7: File Properties via Windows Explorer
Version information is also embedded in the PowerShell executable file itself, accessible without running any commands. Navigate to the PowerShell installation directory in File Explorer. For Windows PowerShell 5.1 the path is:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
For PowerShell 7:
C:\Program Files\PowerShell\7\pwsh.exe
Right-click the executable, select Properties, and click the Details tab. The File version or Product version field shows the version number. This method requires no commands and works even when execution policies or other restrictions prevent running scripts — useful for quick version verification during security audits or when troubleshooting a locked-down environment.
Windows PowerShell vs PowerShell 7: Key Differences
Understanding the distinction between these two editions removes most PowerShell compatibility confusion. Windows PowerShell 5.1 is built on the .NET Framework, ships pre-installed on Windows 10 and Windows 11, and will never be updated beyond 5.1 — Microsoft has officially ended feature development for it. All future development happens in PowerShell 7.
PowerShell 7 is built on modern .NET, runs on Windows, macOS, and Linux, and receives active updates including new features, performance improvements, and security patches. It installs to a completely separate directory and runs as pwsh.exe rather than powershell.exe, meaning both can run simultaneously without conflict. Most scripts written for Windows PowerShell 5.1 run without changes in PowerShell 7, but scripts using PowerShell 7 features will fail in 5.1.
Windows 10 and Windows 11 both ship with Windows PowerShell 5.1 as the default. PowerShell 7 must be installed manually via Winget, the Microsoft Store, or an MSI package from GitHub. The easiest install command using Winget is:
winget install --id Microsoft.Powershell --source winget
After installation, use pwsh in the Run dialog or Windows Terminal to open PowerShell 7 alongside the existing Windows PowerShell 5.1. Just like you would remove a program listing in Windows 10 or 11 to clean up installed software, you can uninstall either PowerShell edition independently at any time without affecting the other.
Which Version Should You Use
For any new scripts or automation projects, PowerShell 7 is the better choice. It receives active development, has better performance, supports modern language features, and produces consistent behavior across Windows, macOS, and Linux. If you are maintaining legacy scripts that use Windows-specific modules or features tied to the .NET Framework, Windows PowerShell 5.1 remains necessary.
Many organizations run both versions simultaneously — Windows PowerShell for legacy compatibility and PowerShell 7 for new development. This is the approach Microsoft itself recommends during the transition period. Enterprise environments should standardize on PowerShell 7.4 (the current LTS release with support through November 2026) for production systems where long-term stability matters more than access to the newest features.
How to Update PowerShell
Windows PowerShell 5.1 updates arrive through Windows Update automatically as part of the Windows Management Framework. There is no manual upgrade path to a higher version — the only way to get beyond 5.1 is to install PowerShell 7 alongside it.
To update or install PowerShell 7, the fastest method is Winget:
winget upgrade --id Microsoft.Powershell
Alternatively, open the Microsoft Store, search for PowerShell, and install the official Microsoft package. The Store version updates automatically. For enterprise deployments, MSI packages are available on the official PowerShell GitHub releases page and support silent installation via command line for mass deployment across multiple machines.
After any update, open a new PowerShell window and run $PSVersionTable.PSVersion to confirm the version installed correctly. Running that single command after every update is the fastest way to verify the installation succeeded.
Frequently Asked Questions
What is the fastest way to check my PowerShell version?
Open PowerShell and type $PSVersionTable.PSVersion then press Enter. This single command returns your exact version number in under one second and works on every version of PowerShell from 2.0 onward across Windows, macOS, and Linux.
What version of PowerShell comes with Windows 10 and Windows 11?
Both Windows 10 and Windows 11 ship with Windows PowerShell 5.1 pre-installed. PowerShell 7 is not pre-installed on any version of Windows and must be manually downloaded and installed. The two versions run side by side without conflict once PowerShell 7 is installed.
What is the difference between $PSVersionTable and Get-Host?
$PSVersionTable returns the version of the PowerShell engine itself and is accurate both locally and on remote machines. Get-Host returns the version of the host application running PowerShell, which usually matches but can differ in integrated terminals. On remote computers via PowerShell remoting, Get-Host always returns version 1.0.0.0 regardless of the actual installed version, making it unreliable for remote checks.
Can PowerShell 7 replace Windows PowerShell 5.1?
No. PowerShell 7 installs separately and does not replace Windows PowerShell 5.1. Both remain installed and available. You launch Windows PowerShell with the powershell command and PowerShell 7 with pwsh. The two installations are completely independent.
What is the latest version of PowerShell?
The current stable release is PowerShell 7.5.5 and the current Long Term Support release is PowerShell 7.6.0. Windows PowerShell remains permanently at version 5.1 with no further major updates planned beyond security patches.
Why does my version check show a different result in different windows?
If you have both Windows PowerShell and PowerShell 7 installed, each window runs a different edition. Check the window title bar — it shows which version you are in. Run $PSHOME to see the installation directory of the active session, which immediately confirms whether you are in Windows PowerShell or PowerShell 7. You can also use Windows 10 troubleshooting techniques when system-level issues affect how PowerShell launches or resolves executables.
Can I check PowerShell version without administrator rights?
Yes. All version checking methods described in this guide work with standard user permissions. Administrator rights are only needed when configuring PowerShell remoting to check versions on remote machines. Local version checks require no elevated privileges.