在 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 存储库中每个版本的发布页面。
- v7.5.0 - 稳定版本:https://aka.ms/powershell-release?tag=stable
- v7.4.7 - LTS 版本:https://aka.ms/powershell-release?tag=lts
- v7.6.0-preview.2 - 预览版:https://aka.ms/powershell-release?tag=preview
可在“版本”页的“资产”部分中找到每个包的下载链接。 由于“资产” 部分可能处于折叠状态,因此可能需要单击展开它。
使用 WinGet 安装 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 二进制文件。
- 脱机 - 安装 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.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 及更高版本上。
可通过运行 winver.exe
来检查所使用的版本。
安装支持
Microsoft 支持本文档中的安装方法。 其他源可能会提供其他第三方安装方法。 尽管这些工具和方法可能有效,但 Microsoft 无法支持这些方法。