在 Windows 上安装 PowerShell 有多种方式。每种安装方法都适用于不同的场景和工作流。请选择最适合您需求的方法。
- WinGet:推荐在 Windows 客户端上安装 PowerShell 的方式
- MSI 包:适用于 Windows 服务器和企业部署场景的最佳选择
- ZIP 包:“侧载” 或安装多个版本的最简单方法
- 建议用于 Windows Nano Server、Windows IoT 和基于 Arm 的系统
- .NET 全局工具:适用于安装和使用其他全局工具的 .NET 开发者的好选择
- Microsoft Store 包:适用于 PowerShell 的休闲用户,但存在一些限制
使用 WinGet 安装 PowerShell(推荐)
WinGet 是 Windows 包管理器,是一个命令行工具,允许用户在 Windows 客户端计算机上发现、安装、升级、删除和配置应用程序。winget
命令行工具默认与 Windows 11 和较新的 Windows 10 版本捆绑在一起,作为 应用安装程序。
注意:请参阅 winget 文档以获取系统要求和安装说明列表。Windows Server 2022 及更早版本不支持 winget
。Windows Server 2025 预览版 26085 及更高版本仅在 具有桌面体验的 Windows Server 上包含 winget
。
以下命令可用于使用发布的 winget
包安装 PowerShell:
搜索最新版本的 PowerShell
winget search Microsoft.PowerShell
名称 ID 版本 来源
---------------------------------------------------------------
PowerShell Microsoft.PowerShell 7.5.0.0 winget
PowerShell 预览版 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 安装。
要下载安装包,可以使用以下链接从 GitHub 安装 PowerShell:
下载完成后,双击安装文件并按照提示进行操作。
安装程序会在 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 7 的预览版可以与其他版本的 PowerShell 并行安装。
- PowerShell 7.4 安装在
$env:ProgramFiles\PowerShell\7
$env:ProgramFiles\PowerShell\7
文件夹被添加到$env:PATH
如果您需要在同一台计算机上并行运行 PowerShell 7.4 与其他版本,请使用 ZIP 安装方法将其他版本安装到不同的文件夹中。
安装 MSI 包
MSI 包可以从命令行安装,允许管理员在没有用户交互的情况下部署包。MSI 包包含以下属性以控制安装选项:
ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL
:此属性控制在 Windows 资源管理器的上下文菜单中添加打开 PowerShell
选项。ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL
:此属性控制在 Windows 资源管理器的上下文菜单中添加用 PowerShell 运行
选项。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 Core SDK,可以将 PowerShell 安装为 .NET 全局工具。
dotnet tool install --global PowerShell
dotnet 工具安装程序会将 $HOME\.dotnet\tools
添加到您的 $env:PATH
环境变量。但是,当前运行的 shell 不会有更新的 $env:PATH
。您可以在新 shell 中通过输入 pwsh
启动 PowerShell。
可以从 Microsoft Store 安装 PowerShell。您可以在 Microsoft Store 网站或 Windows 中的 Store 应用程序中找到 PowerShell 版本。
Microsoft Store 包的优势:
- Windows 中内置的自动更新
- 与其他软件分发机制(如 Intune 和 Configuration Manager)集成
- 可以安装在使用 x86、x64 或 Arm64 处理器的 Windows 系统上
已知限制
默认情况下,Windows Store 包在应用程序沙盒中运行,该沙盒会虚拟化对某些文件系统和注册表位置的访问。对虚拟化文件和注册表位置的更改不会在应用程序沙盒外部持久化。
此沙盒会阻止对应用程序根文件夹的所有更改。存储在 $PSHOME
中的任何系统级配置设置都无法修改。这包括 WSMAN 配置。这会阻止远程会话连接到基于 Store 的 PowerShell 安装。支持用户级配置和 SSH 远程处理。
以下命令需要写入 $PSHOME
。这些命令在 Microsoft Store 实例的 PowerShell 中不受支持。
Register-PSSessionConfiguration
Update-Help -Scope AllUsers
Enable-ExperimentalFeature -Scope AllUsers
Set-ExecutionPolicy -Scope LocalMachine
有关更多信息,请参阅了解打包桌面应用在 Windows 上的运行方式。
从 PowerShell 7.2 开始,PowerShell 包现在免于文件和注册表虚拟化。对虚拟化文件和注册表位置的更改现在会在应用程序沙盒外部持久化。但是,对应用程序根文件夹的更改仍然被阻止。
重要提示:您必须在 Windows build 1903 或更高版本上运行,此豁免才能生效。
安装预览版本
PowerShell 7 的预览版安装到 $env:ProgramFiles\PowerShell\7-preview
,以便它们可以与非预览版的 PowerShell 并行运行。PowerShell 7.4 是下一个预览版。
升级现有安装
升级时,建议使用首次安装 PowerShell 时所用的相同安装方法。如果您不确定 PowerShell 是如何安装的,可以检查 $PSHOME
变量的值,该变量始终指向当前会话运行的 PowerShell 所在的目录。
- 如果值是
$HOME\.dotnet\tools
,则 PowerShell 是通过 .NET 全局工具安装的。 - 如果值是
$Env:ProgramFiles\PowerShell\7
,则 PowerShell 是作为 MSI 包安装的,或者在具有 X86 或 x64 处理器的计算机上通过 WinGet 安装的。 - 如果值以
$Env:ProgramFiles\WindowsApps\
开头,则 PowerShell 是作为 Microsoft Store 包安装的,或者在具有 ARM 处理器的计算机上通过 WinGet 安装的。 - 如果值是其他任何内容,则很可能 PowerShell 是作为 ZIP 包安装的。
如果您通过 MSI 包安装,该信息还会出现在“程序和功能”控制面板中。
要确定是否可以使用 WinGet 升级 PowerShell,请运行以下命令:
winget list --id Microsoft.PowerShell --upgrade-available
如果有可用的升级,输出将指示最新可用版本。使用以下命令通过 WinGet 升级 PowerShell:
winget upgrade --id Microsoft.PowerShell
在 Windows 10 IoT Enterprise 上部署
Windows 10 IoT Enterprise 配备了 Windows PowerShell,我们可以利用它来部署 PowerShell 7。
# 替换以下变量的占位符信息:
$deviceip = '<设备 IP 地址'
$zipfile = 'PowerShell-7.5.0-win-arm64.zip'
$downloadfolder = 'u:\users\administrator\Downloads' # 下载位置是设备本地的。
# 应该有足够的空间用于存储 ZIP 文件和解压后的内容。
# 创建到目标设备的 PowerShell 会话
Set-Item -Path WSMan:\localhost\Client\TrustedHosts $deviceip
$S = New-PSSession -ComputerName $deviceIp -Credential Administrator
# 将 ZIP 包复制到设备
Copy-Item $zipfile -Destination $downloadfolder -ToSession $S
# 连接到设备并解压存档
Enter-PSSession $S
Set-Location u:\users\administrator\Downloads
Expand-Archive .\PowerShell-7.5.0-win-arm64.zip
# 设置到 PowerShell 7 的远程处理
Set-Location .\PowerShell-7.5.0-win-arm64
# 确保使用 -PowerShellHome 参数,否则它会尝试使用 Windows PowerShell 5.1 创建新的端点
.\Install-PowerShellRemoting.ps1 -PowerShellHome .
当您设置 PowerShell 远程处理时,会收到错误消息并从设备断开连接。PowerShell 必须重新启动 WinRM。现在您可以连接到设备上的 PowerShell 7 端点。
# 确保使用 -Configuration 参数。如果您省略它,您将连接到 Windows PowerShell 5.1
Enter-PSSession -ComputerName $deviceIp -Credential Administrator -Configuration PowerShell.7.5.0
在 Windows 10 IoT Core 上部署
当您包含 _IOTPOWERSHELL 功能时,Windows 10 IoT Core 会添加 Windows PowerShell,我们可以利用它来部署 PowerShell 7。上述 Windows 10 IoT Enterprise 的步骤也适用于 IoT Core。
要将最新的 PowerShell 添加到发货映像中,请使用 Import-PSCoreRelease 命令将包包含在工作区中,并将 _OPENSRCPOWERSHELL 功能添加到您的映像中。
注意:对于 ARM64 架构,当您包含 _IOTPOWERSHELL 时,不会添加 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。
# 替换以下变量的占位符信息:
$ipaddr = '<Nano Server IP 地址>'
$credential = Get-Credential # <系统上的管理员账户>
$zipfile = 'PowerShell-7.5.0-win-x64.zip'
# 连接到内置的 Windows PowerShell 实例
$session = New-PSSession -ComputerName $ipaddr -Credential $credential
# 将文件复制到 Nano Server 实例
Copy-Item $zipfile c:\ -ToSession $session
# 进入交互式远程会话
Enter-PSSession $session
# 解压 ZIP 文件
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,直到 PowerShell 达到支持结束或 Windows 版本达到支持结束。
- 包含 PowerShell 7.4 和 PowerShell 7.5-preview(适用于 x64)的 Docker 映像,适用于 Windows Server 2022、Windows Server Core 2022 和 Windows Server Nano build 1809,可从 Microsoft Artifact Registry 获得。
- PowerShell 7.4 及更高版本可以安装在 Windows 10 build 1607 及更高版本、Windows 11、Windows Server 2016 及更高版本上。
您可以通过运行 winver.exe
来检查您正在使用的版本。
安装支持
Microsoft 支持本文档中的安装方法。可能还有其他第三方安装方法可从其他来源获得。虽然这些工具和方法可能有效,但 Microsoft 无法支持这些方法。