在 Windows 上安装 PowerShell

有多种方法可以在 Windows 中安装 PowerShell。 每种安装方法旨在支持不同的方案和工作流。 选择最符合需求的方法。

  • WinGet - 在 Windows 客户端上安装 PowerShell 的建议方法
  • MSI 包 - Windows Server 和企业部署方案的最佳选择
  • ZIP 包 -“旁加载”或安装多个版本的最简单方法
    • 将此方法用于 Windows Nano Server、Windows IoT 和基于 Arm 的系统
  • .NET 全局工具 - 非常适用于安装和使用其他全局工具的 .NET 开发人员
  • Microsoft Store 包 - 适用于 PowerShell 临时用户进行安装的一种简单方法,但有一些限制

注意

本文中的安装命令适用于最新稳定版的 PowerShell。 若要安装不同版本的 PowerShell,请调整命令以匹配所需的版本。 以下链接会将你定向到 GitHub 上 PowerShell 存储库中每个版本的发布页面。

可在“版本”页的“资产”部分中找到每个包的下载链接。 由于“资产” 部分可能处于折叠状态,因此可能需要单击展开它。

WinGet(Windows 包管理器)是一种命令行工具,允许用户在 Windows 客户端计算机上发现、安装、升级、删除和配置应用程序。 此工具是 Windows 程序包管理器服务的客户端接口。 默认情况下,winget 命令行工具作为应用安装程序与 Windows 11 和现代版本的 Windows 10 捆绑在一起。

注意

若要查看系统要求列表和安装说明,请参阅 winget 文档。 winget 在 Windows Server 2022 或更低版本上不可用。 Windows Server 2025 预览版内部版本 26085 及更高版本包括仅适用于具有桌面体验的 Windows Server 的 winget

通过以下命令,可使用已发布的 winget 包安装 PowerShell:

搜索最新版本的 PowerShell

winget search Microsoft.PowerShell
Name               Id                           Version Source
---------------------------------------------------------------
PowerShell         Microsoft.PowerShell         7.5.0.0 winget
PowerShell Preview Microsoft.PowerShell.Preview 7.6.0.2 winget

使用 id 参数安装 PowerShell 或 PowerShell 预览版

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

备注

在使用 X86 或 X64 处理器的 Windows 系统上,winget 安装 MSI 包。 在使用 Arm64 处理器的系统上,winget 安装 Microsoft Store (MSIX) 包。 有关详细信息,请参阅 从 Microsoft Store 安装

安装 MSI 包

若要在 Windows 上安装 PowerShell,请使用以下链接从 GitHub 下载安装包。

下载后,双击安装程序文件并按照提示进行操作。

安装程序在 Windows“开始”菜单中创建一个快捷方式。

  • 默认情况下,包安装位置为 $env:ProgramFiles\PowerShell\<version>
  • 可以通过“开始”菜单或 $env:ProgramFiles\PowerShell\<version>\pwsh.exe 启动 PowerShell

注意

PowerShell 7.4 安装到新目录,并与 Windows PowerShell 5.1 并行运行。 PowerShell 7.4 是一个就地升级,会删除此前版本的 PowerShell 7。 PowerShell 的预览版可以与其他版本的 PowerShell 并行安装。

  • PowerShell 7.4 安装到 $env:ProgramFiles\PowerShell\7
  • $env:ProgramFiles\PowerShell\7 文件夹已添加到 $env:PATH

如果需要与其他版本并行运行 PowerShell 7.4,请使用 ZIP 安装方法将其他版本安装到其他文件夹。

PowerShell 7.2 及更高版本中对 Microsoft 更新的支持

PowerShell 7.2 及更高版本支持 Microsoft 更新。 启用此功能时,你将在传统 Microsoft 更新 (MU) 管理流中获得最新的 PowerShell 7 更新,无论是包含适用于企业的 Windows 更新、WSUS、Microsoft Endpoint Configuration Manager,还是包含设置中的交互式 MU 对话框。

PowerShell MSI 包包含以下命令行选项:

  • USE_MU - 该属性有两个可能值:
    • 1(默认)- 选择通过 Microsoft 更新、WSUS 或 Configuration Manager 进行更新
    • 0 - 不选择通过 Microsoft 更新、WSUS 或 Configuration Manager 进行更新
  • ENABLE_MU
    • 1(默认)- 选择加入使用 Microsoft 更新进行自动更新
    • 0 - 不选择使用 Microsoft 更新

注意

可能已在之前的安装或手动配置中设置了启用更新。 使用 ENABLE_MU=0 并不会删除现有设置。 此外,您的管理员控制的组策略设置可以覆盖此设置。

有关详细信息,请参阅 PowerShell Microsoft 更新常见问题解答

从命令行安装 MSI 包

可以通过命令行安装 MSI 包,这样管理员能够在没有用户交互的情况下部署包。 MSI 包中有下列控制安装选项的属性:

  • ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL - 此属性控制添加 Open PowerShell 项到 Windows 资源管理器上下文菜单的选项。
  • ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL - 此属性控制是否可以将Run with PowerShell 项添加到 Windows 资源管理器的上下文菜单中。
  • ENABLE_PSREMOTING - 此属性控制用于在安装过程中启用 PowerShell 远程处理的选项。
  • REGISTER_MANIFEST - 此属性控制Windows事件日志清单注册的选项。
  • ADD_PATH - 此属性控制用于将 PowerShell 添加到 Windows PATH 环境变量的选项。
  • DISABLE_TELEMETRY - 此属性通过设置 POWERSHELL_TELEMETRY_OPTOUT 环境变量来控制用于禁用 PowerShell 遥测的选项。
  • INSTALLFOLDER - 此属性控制安装目录。 默认为 $env:ProgramFiles\PowerShell\。 这是安装程序创建按版本管理的子文件夹的位置。 不能更改带版本的子文件夹的名称。
    • 对于当前发布,版本化的子文件夹是 7
    • 对于预览版本,版本控制子文件夹为 7-preview

下面的示例展示了如何在启用所有安装选项的情况下无提示安装 PowerShell。

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

有关 Msiexec.exe 命令行选项的完整列表,请参阅命令行选项

安装 ZIP 包

提供有 PowerShell 二进制 ZIP 存档,从而支持高级部署方案。 从当前版本页下载以下 ZIP 存档之一。

根据该文件的下载方式,你可能需要使用 Unblock-File cmdlet 解锁。 将内容解压到你选择的位置,然后从该位置运行 pwsh.exe。 与安装 MSI 包不一样,安装 ZIP 存档不会检查先决条件。 为了让使用 WSMan 的远程处理能够正常运行,请确保已满足先决条件

使用此方法在类似于 Microsoft Surface Pro X 的计算机上安装基于 ARM 的 PowerShell 版本。为获得最佳结果,请将 PowerShell 安装到 $env:ProgramFiles\PowerShell\7 文件夹。

作为 .NET 全局工具安装

如果你已安装 .NET Core SDK,则可以安装 PowerShell 作为 .NET 全局工具

dotnet tool install --global PowerShell

dotnet 工具安装程序将 $HOME\.dotnet\tools 添加到 $env:PATH 环境变量中。 不过,当前运行的 shell 没有更新后的 $env:PATH。 若要从新 shell 启动 PowerShell,可以键入“pwsh”。

从 Microsoft Store 安装

可在 Microsoft Store 中安装 PowerShell。 你可以在 Microsoft Store 网站上或在 Windows 应用商店应用程序中找到 PowerShell 版本。

Microsoft Store 包的权益:

  • 直接内置于 Windows 的自动更新
  • 与其他软件分发机制(如 Intune 和 Configuration Manager)集成
  • 可以使用 x86、x64 或 Arm64 处理器在 Windows 系统上安装

已知的限制

默认情况下,Windows 应用商店包在应用程序沙盒中运行,后者用于虚拟化对某些文件系统和注册表位置的访问。 对虚拟化文件和注册表位置的更改不会在应用程序沙盒外部保留。

此沙盒会阻止对应用程序的根文件夹进行的所有更改。 不能修改存储在 $PSHOME 中的任何系统级配置设置。 其中包括 WSMAN 配置。 这可以防止远程会话连接到 PowerShell 的基于应用商店的安装。 支持用户级配置和 SSH 远程处理。

以下命令需要写入 $PSHOME。 PowerShell 的 Microsoft Store 实例中不支持这些命令。

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

有关详细信息,请参阅了解打包的桌面应用如何在 Windows 上运行

从 PowerShell 7.2 开始,PowerShell 包不再受文件和注册表虚拟化的影响。 现在,对虚拟化文件和注册表位置的更改会在应用程序沙盒外部保留。 不过,仍会阻止对应用程序根文件夹所做的更改。

重要

要使此例外生效,你必须在 Windows 1903 或更高版本上运行。

安装预览版本

PowerShell 7 的预览版安装到 $env:ProgramFiles\PowerShell\7-preview,这样它们可以与 PowerShell 的非预览版并行运行。 PowerShell 7.4 是下一个预览版本。

升级现有安装

若要在升级时获得最佳结果,应使用首次安装 PowerShell 时使用的相同安装方法。 如果不确定 PowerShell 的安装方式,可以检查 $PSHOME 变量的值,该变量始终指向包含当前会话运行的 PowerShell 的目录。

  • 如果值为 $HOME\.dotnet\tools,则 PowerShell 随 .NET Global 工具一起安装。
  • 如果值是 $Env:ProgramFiles\PowerShell\7,则 PowerShell 作为 MSI 包安装,或用 WinGet 在具有 X86 或 x64 处理器的计算机上安装。
  • 如果该值以 $Env:ProgramFiles\WindowsApps\开头,PowerShell 被作为 Microsoft 应用商店包 或通过 WinGet 安装在具有 ARM 处理器的计算机上。
  • 如果该值是其他任何值,则可能表明 PowerShell 是作为 ZIP 包 安装的。

如果是通过 MSI 包安装的,则该信息还会显示在“程序和功能”控制面板中。

若要确定是否可以使用 WinGet 升级 PowerShell,请运行以下命令:

winget list --id Microsoft.PowerShell --upgrade-available

如果有可用的升级,输出会指示最新的可用版本。 使用以下命令通过 WinGet 升级 PowerShell:

winget upgrade --id Microsoft.PowerShell

Windows 10 IoT 企业版部署

Windows 10 IoT 企业版随附 Windows PowerShell,可用来部署 PowerShell 7。

# Replace the placeholder information for the following variables:
$deviceip = '<device ip address'
$zipfile = 'PowerShell-7.5.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.5.0-win-arm64.zip

# Set up remoting to PowerShell 7
Set-Location .\PowerShell-7.5.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 .

设置 PowerShell 远程处理时,你收到一条错误消息,并与设备断开连接。 PowerShell 必须重启 WinRM。 现在可以连接到设备上的 PowerShell 7 端点。


# 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.5.0

Windows 10 IoT 核心版部署

当你添加 IOT_POWERSHELL 功能后,Windows 10 IoT 核心版便会添加 Windows PowerShell,我们可以使用它来部署 PowerShell 7。 对于 IoT 核心版,还可以遵循为 Windows 10 IoT 企业版定义的步骤。

若要在随附映像中添加最新的 PowerShell,请使用 Import-PSCoreRelease 命令在工作区域中添加包,然后将 OPENSRC_POWERSHELL 功能添加到映像中。

注意

对于 ARM64 体系结构,在你添加 IOT_POWERSHELL 功能后,它不会添加 Windows PowerShell。 因此,基于 zip 的安装将不起作用。 需要使用 Import-PSCoreRelease 命令将其添加到映像中。

在 Nano Server 上进行部署

为了更好地理解这些说明,假定 Nano Server 是已运行 PowerShell 版本的“无外设”操作系统。 有关详细信息,请参阅 Nano Server 映像生成器文档。

可以使用两种不同的方法来部署 PowerShell 二进制文件。

  1. 脱机 - 安装 Nano Server VHD,并将 zip 文件的内容解压到安装映像中的所选位置。
  2. 联机 - 通过 PowerShell 会话传输 zip 文件,并在所需位置中将其解压。

在这两种情况下,都需要 Windows x64 ZIP 版本包。 在 PowerShell 的“管理员”实例中运行命令。

PowerShell 脱机部署

  1. 使用常用 zip 实用工具将包解压到已安装的 Nano Server 映像中的目录。
  2. 卸载映像并启动。
  3. 连接到 Windows PowerShell 的内置实例。

PowerShell 在线部署

若要将 PowerShell 部署到 Nano Server,请按照以下步骤操作。

# 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.5.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.5.0-win-x64.zip -DestinationPath 'C:\Program Files\PowerShell 7'

PowerShell 远程处理

PowerShell 支持通过 WSMan 和 SSH 的 PowerShell 远程处理协议 (PSRP)。 有关详细信息,请参阅:

支持的 Windows 版本

Microsoft 在 PowerShell 到达支持终止日期Windows 版本到达支持终止日期之前仍然支持 PowerShell。

  • Microsoft 工件注册表中提供包含 Windows Server 2022、Windows Server Core 2022 和 Windows Server Nano 内部版本 1809 的 PowerShell 7.4 和 PowerShell 7.5 x64 预览版的 Docker 映像。
  • PowerShell 7.4 及更高版本可安装在 Windows 10 内部版本 1607 及更高版本、Windows 11、Windows Server 2016 及更高版本上。

注意

对特定版本的 Windows 的支持由 Microsoft 支持部门生命周期策略决定。 有关详细信息,请参阅:

可通过运行 winver.exe 来检查所使用的版本。

安装支持

Microsoft 支持本文档中的安装方法。 其他源可能会提供其他第三方安装方法。 尽管这些工具和方法可能有效,但 Microsoft 无法支持这些方法。