Windows powershell preview

Skip to main content

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Installing PowerShell on Windows

  • Article
  • 11/09/2022
  • 11 minutes to read

In this article

There are multiple ways to install PowerShell in Windows. Each install method is designed to support different scenarios and workflows. Choose the method that best suits your needs.

  • Winget - Recommended way to install PowerShell on Windows clients
  • MSI package - Best choice for Windows Servers and enterprise deployment scenarios
  • ZIP package - Easiest way to "side load" or install multiple versions
    • Use this method for Windows Nano Server, Windows IoT, and Arm-based systems
  • .NET Global tool - A good choice for .NET developers that install and use other global tools
  • Microsoft Store package - An easy way to install for casual users of PowerShell but has limitations

Winget, the Windows Package Manager, is a command-line tool enables users to discover, install, upgrade, remove, and configure applications on Windows client computers. This tool is the client interface to the Windows Package Manager service. The winget command-line tool is bundled with Windows 11 and modern versions of Windows 10 by default as the App Installer.

Note

See the winget documentation for a list of system requirements and install instructions. Winget does not currently run on Windows servers.

The following commands can be used to install PowerShell using the published winget packages:

Search for the latest version of PowerShell

winget search Microsoft.PowerShell
Name               Id                           Version   Source
-----------------------------------------------------------------
PowerShell         Microsoft.PowerShell         7.3.0.0   winget
PowerShell Preview Microsoft.PowerShell.Preview 7.3.101.0 winget

Install PowerShell or PowerShell Preview using the id parameter

winget install --id Microsoft.Powershell --source winget
winget install --id Microsoft.Powershell.Preview --source winget

Installing the MSI package

To install PowerShell on Windows, use the following links to download the install package from GitHub.

  • PowerShell-7.3.0-win-x64.msi
  • PowerShell-7.3.0-win-x86.msi

Once downloaded, double-click the installer file and follow the prompts.

The installer creates a shortcut in the Windows Start Menu.

  • By default the package is installed to $env:ProgramFiles\PowerShell\<version>
  • You can launch PowerShell via the Start Menu or $env:ProgramFiles\PowerShell\<version>\pwsh.exe

Note

PowerShell 7.3 installs to a new directory and runs side-by-side with Windows PowerShell 5.1. PowerShell 7.3 is an in-place upgrade that replaces PowerShell 7.0 and lower.

  • PowerShell 7.3 is installed to $env:ProgramFiles\PowerShell\7
  • The $env:ProgramFiles\PowerShell\7 folder is added to $env:PATH
  • Folders for previously released versions are deleted

If you need to run PowerShell 7.3 side-by-side with other versions, use the ZIP install method to install the other version to a different folder.

Support for Microsoft Update in PowerShell 7.2 and newer

PowerShell 7.2 and newer has support for Microsoft Update. When you enable this feature, you'll get the latest PowerShell 7 updates in your traditional Microsoft Update (MU) management flow, whether that's with Windows Update for Business, WSUS, Microsoft Endpoint Configuration Manager, or the interactive MU dialog in Settings.

The PowerShell 7.3 MSI package includes following command-line options:

  • USE_MU - This property has two possible values:
    • 1 (default) - Opts into updating through Microsoft Update, WSUS, or Configuration Manager
    • 0 - Do not opt into updating through Microsoft Update, WSUS, or Configuration Manager
  • ENABLE_MU
    • 1 (default) - Opts into using Microsoft Update for Automatic Updates
    • 0 - Do not opt into using Microsoft Update

Note

Enabling updates may have been set in a previous installation or manual configuration. Using ENABLE_MU=0 does not remove the existing settings. Also, this setting can be overruled by Group Policy settings controlled by your administrator.

For more information, see the PowerShell Microsoft Update FAQ.

Install the MSI package from the command line

MSI packages can be installed from the command line allowing administrators to deploy packages without user interaction. The MSI package includes the following properties to control the installation options:

  • ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL - This property controls the option for adding the Open PowerShell item to the context menu in Windows Explorer.
  • ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL - This property controls the option for adding the Run with PowerShell item to the context menu in Windows Explorer.
  • ENABLE_PSREMOTING - This property controls the option for enabling PowerShell remoting during installation.
  • REGISTER_MANIFEST - This property controls the option for registering the Windows Event Logging manifest.
  • ADD_PATH - This property controls the option for adding PowerShell to the Windows PATH environment variable.

The following example shows how to silently install PowerShell with all the install options enabled.

msiexec.exe /package PowerShell-7.3.0-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1

For a full list of command-line options for Msiexec.exe, see Command line options.

Installing the ZIP package

PowerShell binary ZIP archives are provided to enable advanced deployment scenarios. Download one of the following ZIP archives from the current release page.

  • PowerShell-7.3.0-win-x64.zip
  • PowerShell-7.3.0-win-x86.zip
  • PowerShell-7.3.0-win-arm64.zip

Depending on how you download the file you may need to unblock the file using the Unblock-File cmdlet. Unzip the contents to the location of your choice and run pwsh.exe from there. Unlike installing the MSI packages, installing the ZIP archive doesn't check for prerequisites. For remoting over WSMan to work properly, ensure that you've met the prerequisites.

Use this method to install the ARM-based version of PowerShell on computers like the Microsoft Surface Pro X. For best results, install PowerShell to the to $env:ProgramFiles\PowerShell\7 folder.

If you already have the .NET Core SDK installed, you can install PowerShell as a .NET Global tool.

dotnet tool install --global PowerShell

The dotnet tool installer adds $env:USERPROFILE\.dotnet\tools to your $env:PATH environment variable. However, the currently running shell doesn't have the updated $env:PATH. You can start PowerShell from a new shell by typing pwsh.

Installing from the Microsoft Store

PowerShell 7.3 can be installed from the Microsoft Store. You can find the PowerShell release in the Microsoft Store site or in the Store application in Windows.

Benefits of the Microsoft Store package:

  • Automatic updates built right into Windows
  • Integrates with other software distribution mechanisms like Intune and Configuration Manager
  • Can install on Windows systems using x86, x64, or Arm64 processors

Known limitations

By default, Windows Store packages run in an application sandbox that virtualizes access to some filesystem and registry locations. Changes to virtualized file and registry locations do not persist outside of the application sandbox.

This sandbox all blocks any changes to the application's root folder. Any system-level configuration settings stored in $PSHOME cannot be modified. This includes the WSMAN configuration. This prevents remote sessions from connecting to Store-based installs of PowerShell. User-level configurations and SSH remoting are supported.

The following commands need write to $PSHOME. These commands are not supported in a Microsoft Store instance of PowerShell.

  • Register-PSSessionConfiguration
  • Update-Help -Scope AllUsers
  • Enable-ExperimentalFeature -Scope AllUsers
  • Set-ExecutionPolicy -Scope LocalMachine

For more information, see Understanding how packaged desktop apps run on Windows.

Changes for PowerShell 7.2

Beginning in PowerShell 7.2, the PowerShell package is now exempt from file and registry virtualization. Changes to virtualized file and registry locations now persist outside of the application sandbox. However, changes to the application's root folder are still blocked.

Important

You must be running on Windows build 1903 or higher for this exemption to work.

Installing a preview version

Preview releases of PowerShell 7 install to $env:ProgramFiles\PowerShell\7-preview so they can be run side-by-side with non-preview releases of PowerShell. PowerShell 7.3 will be the next preview release.

Upgrading an existing installation

For best results when upgrading, you should use the same install method you used when you first installed PowerShell. Each installation method installs PowerShell in a different location. If you are not sure how PowerShell was installed, you can compare the installed location with the package information in this article. If you installed via the MSI package, that information appears in the Programs and Features Control Panel.

Note

When upgrading, PowerShell won't upgrade from an LTS version to a non-LTS version. It only upgrades to the latest version of that LTS. For example, from 7.2.3 to 7.2.7. To upgrade from an LTS release to a newer stable version or the next LTS, you need to install the new version with the MSI for that release.

When the installed version is not an LTS version, PowerShell upgrades to the latest stable version.

Deploying on Windows 10 IoT Enterprise

Windows 10 IoT Enterprise comes with Windows PowerShell, which we can use to deploy PowerShell 7.

# Replace the placeholder information for the following variables:
$deviceip = '<device ip address'
$zipfile = 'PowerShell-7.3.0-win-Arm64.zip'
$downloadfolder = 'u:\users\administrator\Downloads'  # The download location is local to the device.
    # There should be enough  space for the zip file and the unzipped contents.

# Create PowerShell session to target device
Set-Item -Path WSMan:\localhost\Client\TrustedHosts $deviceip
$S = New-PSSession -ComputerName $deviceIp -Credential Administrator
# Copy the ZIP package to the device
Copy-Item $zipfile -Destination $downloadfolder -ToSession $S

#Connect to the device and expand the archive
Enter-PSSession $S
Set-Location u:\users\administrator\Downloads
Expand-Archive .\PowerShell-7.3.0-win-Arm64.zip

# Set up remoting to PowerShell 7
Set-Location .\PowerShell-7.3.0-win-Arm64
# Be sure to use the -PowerShellHome parameter otherwise it tries to create a new
# endpoint with Windows PowerShell 5.1
.\Install-PowerShellRemoting.ps1 -PowerShellHome .

When you set up PowerShell Remoting you get an error message and are disconnected from the device. PowerShell has to restart WinRM. Now you can connect to PowerShell 7 endpoint on device.


# Be sure to use the -Configuration parameter. If you omit it, you connect to Windows PowerShell 5.1
Enter-PSSession -ComputerName $deviceIp -Credential Administrator -Configuration PowerShell.7.3.0

Deploying on Windows 10 IoT Core

Windows 10 IoT Core adds Windows PowerShell when you include IOT_POWERSHELL feature, which we can use to deploy PowerShell 7. The steps defined above for Windows 10 IoT Enterprise can be followed for IoT Core as well.

For adding the latest PowerShell in the shipping image, use Import-PSCoreRelease command to include the package in the workarea and add OPENSRC_POWERSHELL feature to your image.

Note

For ARM64 architecture, Windows PowerShell is not added when you include IOT_POWERSHELL. So the zip based install does not work. You need to use Import-PSCoreRelease command to add it in the image.

Deploying on Nano Server

These instructions assume that the Nano Server is a "headless" OS that has a version of PowerShell is already running on it. For more information, see the Nano Server Image Builder documentation.

PowerShell binaries can be deployed using two different methods.

  1. Offline - Mount the Nano Server VHD and unzip the contents of the zip file to your chosen location within the mounted image.
  2. Online - Transfer the zip file over a PowerShell Session and unzip it in your chosen location.

In both cases, you need the Windows x64 ZIP release package. Run the commands within an "Administrator" instance of PowerShell.

Offline Deployment of PowerShell

  1. Use your favorite zip utility to unzip the package to a directory within the mounted Nano Server image.
  2. Unmount the image and boot it.
  3. Connect to the built-in instance of Windows PowerShell.
  4. Follow the instructions to create a remoting endpoint using the "another instance technique".

Online Deployment of PowerShell

Deploy PowerShell to Nano Server using the following steps.

# Replace the placeholder information for the following variables:
$ipaddr = '<Nano Server IP address>'
$credential = Get-Credential # <An Administrator account on the system>
$zipfile = 'PowerShell-7.3.0-win-x64.zip'
# Connect to the built-in instance of Windows PowerShell
$session = New-PSSession -ComputerName $ipaddr -Credential $credential
# Copy the file to the Nano Server instance
Copy-Item $zipfile c:\ -ToSession $session
# Enter the interactive remote session
Enter-PSSession $session
# Extract the ZIP file
Expand-Archive -Path C:\PowerShell-7.3.0-win-x64.zip -DestinationPath 'C:\Program Files\PowerShell 7'

If you want WSMan-based remoting, follow the instructions to create a remoting endpoint using the "another instance technique".

PowerShell remoting

PowerShell supports the PowerShell Remoting Protocol (PSRP) over both WSMan and SSH. For more information, see:

  • SSH Remoting in PowerShell
  • WSMan Remoting in PowerShell

The following prerequisites must be met to enable PowerShell remoting over WSMan on older versions of Windows.

  • Install the Windows Management Framework (WMF) 5.1 (as necessary). For more information about WMF, see WMF Overview.
  • Install the Universal C Runtime on Windows versions predating Windows 10. It's available via direct download or Windows Update. Fully patched systems already have this package installed.

Supported versions of Windows

The following table is a list of PowerShell releases and the versions of Windows they are supported on. These versions are supported until either the version of PowerShell reaches end-of-support or the version of Windows reaches end-of-support.

Windows7.0 (LTS)7.17.2 (LTS-current)7.3 (preview)
Windows Server 2016, 2019, or 2022
Windows powershell preview
Windows Server 2012 R2
Windows Server Core (2012 R2 or higher)
Windows Server Nano (1809 or higher)
Windows Server 2012
Windows Server 2008 R2
Windows 11
Windows 10 1607+
Windows 8.1

PowerShell is supported on Windows for the following processor architectures.

Windows7.0 (LTS)7.2 (LTS-current)7.3 (preview)
Nano Server Version 1803+ x64, Arm32 x64 x64
Windows Server 2012 R2+ x64, x86 x64, x86 x64, x86
Windows Server Core 2012 R2+ x64, x86 x64, x86 x64, x86
Windows 10 or 11 Client x64, x86 x64, x86, Arm64 x64, x86, Arm64
Windows 8.1 Client x64, x86 x64, x86 x64, x86

You can check the version that you are using by running winver.exe.

Installation support

Microsoft supports the installation methods in this document. There may be other third-party methods of installation available from other sources. While those tools and methods may work, Microsoft cannot support those methods.

Feedback

Submit and view feedback for

Why does PowerShell keep popping up?

If your computer is infected with malware, you may notice that PowerShell keeps appearing on your screen whenever the infection attempts to execute a harmful script on your computer. To be sure, you may scan your computer using Windows Security or a third-party antivirus tool.

How do I remove Windows PowerShell virus?

The first and the most efficient method you should try to remove the Windows Powershell virus is to use antivirus software and malware removal tool. There is a powerful built-in feature on Windows 10 you can use – Windows Defender. You can use it to scan your computer.

Is there PowerShell Mac?

To run PowerShell on Mac, you can directly download its . pkg file from Microsoft's site, or you can use Homebrew to install PowerShell. Once PowerShell is installed, you can run it by opening a Terminal window and executing the pwsh command.

Can I delete Windows PowerShell?

Yes, you can uninstall Windows PowerShell if you don't use it and also, can download and install it later if you feel you need it. Microsoft Windows PowerShell is a new command-line shell and scripting language that is designed for system administration and automation.