Ivy Consultants Inc.

Consulting Services for Security, Networking, Wi-Fi and Windows Server

Here 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

 Install PowerShell using Winget (recommended)

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 doesn’t 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

From Windows command line, run the following command

winget search Microsoft.PowerShell

Output

Name                                     Id                                           Version                      Source

PowerShell                           Microsoft.PowerShell                    7.4.0.0                  winget

PowerShell Preview         Microsoft.PowerShell.Preview    7.4.0.101             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

 Note

On Windows systems using X86 or X64 processor, winget installs the MSI package. On systems using the Arm64 processor, winget installs the Microsoft Store (MSIX) package. For more information, see Installing from the Microsoft Store.

Installing the MSI package

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

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.4 installs to a new directory and runs side-by-side with Windows PowerShell 5.1. PowerShell 7.4 is an in-place upgrade that removes previous versions of PowerShell 7. Preview versions of PowerShell can be installed side-by-side with other versions of PowerShell.

  • PowerShell 7.4 is installed to $env:ProgramFiles\PowerShell\7
  • The $env:ProgramFiles\PowerShell\7 folder is added to $env:PATH

If you need to run PowerShell 7.4 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 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 – Don’t opt into updating through Microsoft Update, WSUS, or Configuration Manager
  • ENABLE_MU
    • 1 (default) – Opts into using Microsoft Update for Automatic Updates
    • 0 – Don’t opt into using Microsoft Update

 Note

Enabling updates may have been set in a previous installation or manual configuration. Using ENABLE_MU=0 doesn’t 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.
  • DISABLE_TELEMETRY – This property controls the option for disabling PowerShell’s telemetry by setting the POWERSHELL_TELEMETRY_OPTOUT environment variable.
  • INSTALLFOLDER – This property controls the installation directory. The default is $env:ProgramFiles\PowerShell\. This is the location where the installer creates the versioned subfolder. You can’t change the name of the versioned subfolder.
    • For current releases, the versioned subfolder is 7
    • For preview releases, the versioned subfolder is 7-preview

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

PowerShell

msiexec.exe /package PowerShell-7.4.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

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.

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 $env:ProgramFiles\PowerShell\7 folder.

Install as a .NET Global tool

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

Copy

dotnet tool install –global PowerShell

The dotnet tool installer adds $HOME\.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 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 don’t persist outside of the application sandbox.

This sandbox blocks all changes to the application’s root folder. Any system-level configuration settings stored in $PSHOME can’t 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 aren’t supported in a Microsoft Store instance of PowerShell.

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

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.