在 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 存储库中每个版本的发布页面。

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

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

注意

若要查看系统要求列表和安装说明,请参阅 winget 文档。 Winget 当前未在 Windows 服务器上运行。

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

搜索最新版本的 PowerShell

winget search Microsoft.PowerShell
Name               Id                           Version   Source
-----------------------------------------------------------------
PowerShell         Microsoft.PowerShell         7.4.2.0   winget
PowerShell Preview Microsoft.PowerShell.Preview 7.5.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.4.2-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 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 在使用 X86 或 x64 处理器的计算机上安装为 MSI 包或与 Winget 包一起安装。
  • 如果值以 $Env:ProgramFiles\WindowsApps\ 开头,则 PowerShell 在使用 ARM 处理器的计算机上安装为 Microsoft Store 包或与 Winget 一起安装。
  • 如果值是任何其他值,则可能是 PowerShell 安装为 ZIP 包

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

为确定是否可以使用 Winget 升级 PowerShell,请运行以下命令:

winget list --name PowerShell --upgrade-available

如果有可用的升级,输出会指示最新的可用版本。

注意

升级时,PowerShell 不会从 LTS 版本升级到非 LTS 版本。 它仅升级到最新版本的 LTS,例如,从 7.2.3 升级到 7.2.19。 若要从 LTS 版本升级到较新的稳定版本或下一个 LTS 版本,需要使用新版本的 MSI 来安装该版本。

当安装的版本不是 LTS 版本时,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.4.2-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.4.2-win-arm64.zip

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

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 的内置实例。
  4. 按照说明使用“另一种实例技术”创建远程处理终结点。

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

如果需要基于 WSMan 的远程处理,请按照说明使用“另一种实例技术”创建远程处理终结点。

PowerShell 远程处理

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

必须满足以下先决条件才能在较低版本的 Windows 上通过 WSMan 启用 PowerShell 远程处理。

  • 安装 Windows Management Framework (WMF) 5.1(根据需要)。 有关 WMF 的详细信息,请参阅 WMF 概述
  • 在低于 Windows 10 的 Windows 版本上安装通用 C 运行时。 可以通过直接下载或 Windows 更新来获取它。 完全修补的系统已安装此包。

支持的 Windows 版本

下表列出了 PowerShell 版本以及支持它们的 Windows 版本。 这些版本在 PowerShell 版本到达支持终止日期Windows 版本到达支持终止日期之前受支持。

  • 支持 图标指示仍支持 OS 或 PowerShell 版本
  • 不支持 图标指示该 OS 版本不再支持 PowerShell 版本
  • 测试中 图标指示我们尚未在该 OS 上完成 PowerShell 的测试
  • 不支持 图标指示不支持 OS 或 PowerShell 版本
  • 当 OS 版本和 PowerShell 版本都具有 支持 图标时,将支持该组合
Windows 7.2(LTS-早期) 7.3 7.4(LTS-当前)
支持 Windows Server 2016、2019 或 2022 受支持 受支持 支持
支持 Windows Server Nano(1809 或更高版本) 受支持 受支持 支持
支持 Windows 11 受支持 受支持 支持
支持 Windows 10 1607+ 受支持 受支持 支持

注意

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

以下处理器体系结构在 Windows 上支持 PowerShell。

Windows 7.2 (LTS-current) 7.3 7.4(LTS-当前)
Windows Server 2016 及更高版本 x64、x86 x64、x86 x64、x86
Windows Server Core 2016+ x64、x86 x64、x86 x64、x86
Nano Server 版本 1803 及更高版本 X64 X64 X64
Windows 11 客户端 x64、Arm64 x64、Arm64 x64、Arm64
Windows 10 客户端 x64、x86、Arm64 x64、x86、Arm64 x64、x86、Arm64

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

安装支持

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