在 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 存储库中每个版本的发布页面。
- 稳定版:https://aka.ms/powershell-release?tag=stable
- LTS 版本:https://aka.ms/powershell-release?tag=lts
- 预览版:https://aka.ms/powershell-release?tag=preview
可在“版本”页的“资产”部分中找到每个包的下载链接。 由于“资产” 部分可能处于折叠状态,因此可能需要单击展开它。
使用 Winget 安装 PowerShell(推荐)
Windows 包管理器 Winget 是一种命令行工具,用户可以使用它在 Windows 客户端计算机上查找、安装、升级、删除和配置应用程序。 此工具是 Windows 程序包管理器服务的客户端接口。 默认情况下,winget
命令行工具作为应用安装程序与 Windows 11 和现代版本的 Windows 10 捆绑在一起。
注意
若要查看系统要求列表和安装说明,请参阅 winget 文档。
Winget
在 Windows Server 2022 或更低版本上不可用。
Windows Server 2025 预览版内部版本 26085 及更高版本包括仅适用于具有桌面体验的 Windows Server 的 winget
。 有关详细信息,请参阅宣布推出 Windows Server 预览版内部版本 26085。
通过以下命令,可使用已发布的 winget
包安装 PowerShell:
搜索最新版本的 PowerShell
winget search Microsoft.PowerShell
Name Id Version Source
-----------------------------------------------------------------
PowerShell Microsoft.PowerShell 7.4.6.0 winget
PowerShell Preview Microsoft.PowerShell.Preview 7.5.0.101 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.6-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 在使用 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.4.3 升级到 7.4.6。 若要从 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.6-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.6-win-arm64.zip
# Set up remoting to PowerShell 7
Set-Location .\PowerShell-7.4.6-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.6
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 二进制文件。
- 脱机 - 安装 Nano Server VHD,并将 zip 文件的内容解压到安装映像中的所选位置。
- 联机 - 通过 PowerShell 会话传输 zip 文件,并在所需位置中将其解压。
在这两种情况下,都需要 Windows x64 ZIP 版本包。 在 PowerShell 的“管理员”实例中运行命令。
PowerShell 脱机部署
- 使用常用 zip 实用工具将包解压到已安装的 Nano Server 映像中的目录。
- 卸载映像并启动。
- 连接到 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.4.6-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.6-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 版本
Microsoft 在 PowerShell 到达支持终止日期或 Windows 版本到达支持终止日期之前仍然支持 PowerShell。
- Microsoft 工件注册表提供了包含适用于 x64 for Windows Server 2022、Windows Server Core 2022 和 Windows Server Nano 内部版本 1809 的 PowerShell 7.4 和 PowerShell 7.5 预览版的 Docker 映像。
- PowerShell 7.4 及更高版本可安装在 Windows 10 内部版本 1607 及更高版本、Windows 11、Windows Server 2016 及更高版本上。
可通过运行 winver.exe
来检查所使用的版本。
安装支持
Microsoft 支持本文档中的安装方法。 其他源可能会提供其他第三方安装方法。 尽管这些工具和方法可能有效,但 Microsoft 无法支持这些方法。