在 Windows 上安装 PowerShell 的多种方法与完整指南

原文:在 Windows 上安装 PowerShell 的多种方法与完整指南 | w3cschool笔记

在 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:

  • PowerShell-7.5.0-win-x64.msi
  • PowerShell-7.5.0-win-x86.msi
  • PowerShell-7.5.0-win-arm64.msi

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

安装程序会在 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 存档之一。

  • PowerShell-7.5.0-win-x64.zip
  • PowerShell-7.5.0-win-x86.zip
  • PowerShell-7.5.0-win-arm64.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 二进制文件。

  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。

# 替换以下变量的占位符信息:
$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)。有关更多信息,请参阅:

  • PowerShell 中的 SSH 远程处理
  • PowerShell 中的 WSMan 远程处理

支持的 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 无法支持这些方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生算力引擎:分布式推理的流体动力学

引言&#xff1a;算力黑洞的引力扰动 OpenAI推理集群日处理4.5亿次请求&#xff0c;CUDA 12.3实现μs级张量切换。特斯拉Dojo超算芯片间延迟0.5ns&#xff0c;阿里巴巴PAI平台节省58%训练时长。HuggingFace模型库下载量突破3亿次&#xff0c;AWS Inferentia芯片能效比提升8倍。…

MySQL MVCC的快照读和当前读区别,Redis的RDB+AOF混合持久化流程。

MySQL MVCC 的快照读和当前读区别 快照读 (Snapshot Read) 定义: 读取数据的历史版本&#xff08;快照&#xff09;&#xff0c;基于 MVCC&#xff08;多版本并发控制&#xff09;实现。特点: 不加锁&#xff0c;非阻塞读。返回事务开始时的快照数据&#xff0c;确保一致性。…

Cesium 自定义路径导航材质

cesium 自定义路径导航纹理图片随便更换&#xff0c;UI 提供设计图片即可达到效果&#xff1b; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码&#xff1b; 拿到就能用轻松解决&#xff01;帮忙点个关注吧&#xff01;

3月25号

添加图片的一些例子: // 创建一个二维数组,用来管理数据int[][] data new int[4][4]; // 记录空白方块的位置int x0;int y0; // 定义一个变量,记录当前展示图片的路径String path"E:\\java\\jigsawgame\\路飞\\路飞"; // 加载图片细节: // …

【机器学习】什么是支持向量机?

什么是支持向量机&#xff1f; 支持向量机&#xff08;SVM&#xff0c;Support Vector Machine&#xff09;是一种强大的机器学习算法&#xff0c;常用于分类问题&#xff0c;也可以用于回归问题。它的核心思想是通过找到一个最佳的“超平面”来将不同类别的数据分开&#xff…

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

文章目录 一、引言云计算平台概览ToDesk云电脑&#xff1a;随时随地用上高性能电脑 二 .云电脑初体验DeekSeek介绍版本参数与特点任务类型表现 1、ToDesk云电脑2、顺网云电脑3、海马云电脑 三、DeekSeek本地化实操和AIGC应用1. ToDesk云电脑2. 海马云电脑3、顺网云电脑 四、结语…

Spring Boot 一个接口实现任意表的 Excel 导入导出

Java的web开发需要excel的导入导出工具&#xff0c;所以需要一定的工具类实现&#xff0c;如果是使用easypoi、Hutool导入导出excel&#xff0c;会非常的损耗内存&#xff0c;因此可以尝试使用easyexcel解决大数据量的数据的导入导出&#xff0c;且可以通过Java8的函数式编程解…

QT原子变量:QAtomicInteger、QAtomicPointer、QAtomicFlag

引言&#xff1a;原子变量为何重要&#xff1f; 在多线程编程中&#xff0c;共享数据的原子性访问是保证线程安全的核心。传统互斥锁虽然有效&#xff0c;但会带来性能损耗和死锁风险。QT提供的原子类型&#xff08;QAtomicInteger、QAtomicPointer、QAtomicFlag&#xff09;通…

大模型金融企业场景落地应用

一、商业银行体系 1. 江苏银行 企业背景&#xff1a;江苏银行是总部位于江苏南京的全国性股份制商业银行&#xff0c;在城商行中资产规模位居前列&#xff0c;积极拥抱金融科技&#xff0c;将数字化转型作为核心战略之一。近年来&#xff0c;江苏银行持续加大在人工智能、大数…

卡特兰数在数据结构上面的运用

原理 Catalan数是一个数列&#xff0c;其第n项表示n个不同结点可以构成的二叉排序树的数量。Catalan数的第n项公式为&#xff1a; &#xfffc; 其中&#xff0c;&#xfffc;是组合数&#xff0c;表示从2n个元素中选择n个元素的组合数。 Catalan数的原理可以通过以下方式理解&…

影视后期工具学习之PR(中)

pr剪辑之旅----声音设计 第五课 镜头语言和绿幕抠像 超级键效果(超级键通过简单的吸管取色和参数调整,即可实现专业级抠像与合成效果。无论是绿幕替换背景,还是创意双重曝光,都能轻松驾驭。建议结合「Alpha 通道」视图观察透明区域,逐步优化细节,最终导出高质量视频。)…

使用BootStrap 3的原创的模态框组件,没法弹出!估计是原创的bug

最近在给客户开发一个CRM系统&#xff0c;其中用到了BOOTSTRAP的模态框。版本是3。由于是刚开始用该框架。所以在正式部署到项目中前&#xff0c;需要测试一下&#xff0c;找到框架中的如下部分。需要说明的是。我用的asp.net mvc框架开发。测试也是在asp.net mvc环境下。 复制…

Camera2 与 CameraX 闲谈

目录 &#x1f4c2; 前言 1. &#x1f531; Camera2 2. &#x1f531; CameraX 3. &#x1f531; Camera2 与 CameraX 1&#xff09;使用复杂度与开发效率 2&#xff09;控制能力与应用场景 3&#xff09;设备兼容性与稳定性 4&#xff09;更新与维护 4. &#x1f4a0…

【大语言模型_8】vllm启动的模型通过fastapi封装增加api-key验证

背景&#xff1a; vllm推理框架启动模型不具备api-key验证。需借助fastapi可以实现该功能 代码实现&#xff1a; rom fastapi import FastAPI, Header, HTTPException, Request,Response import httpx import logging# 创建 FastAPI 应用 app FastAPI() logging.basicConfig(…

基于SpringBoot的名著阅读网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Langchain 自定义工具和内置工具

使用介绍 自定义工具时的元素概念介绍 在Langchain中&#xff0c;工具&#xff08;Tool&#xff09;是与语言模型交互的基本单元。以下是自定义工具时的关键元素&#xff1a; name 定义&#xff1a;工具的名称&#xff0c;用于唯一标识该工具。作用&#xff1a;当工具被集成…

Gitee上库常用git命令

Gitee上库常用git命令 1、Fork 项目2、个人仓库修改3、追加提交4、创建PR5、多笔commit合一 1、Fork 项目 2、个人仓库修改 git add . // -s 表示自动添加邮箱签名信息&#xff0c;-m表示其后跟随commit描述 git commit -sm “add transition freeze” git push origin [目标…

Java 大视界 -- Java 大数据在智慧农业精准灌溉与施肥决策中的应用(144)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

Redux,React-redux。基础

状态管理库&#xff0c;集中式存储状态&#xff0c;管理状态 ✅ redux //简单实现 redux源码 export function createStore(reducer) {// reducer由用户编写&#xff0c; 必须是一个函数&#xff0c;dispatch的时候&#xff0c;reducer要执行if (typeof reducer ! function) t…

5.2 位运算专题:LeetCode 268. 丢失的数字

1. 题目链接 LeetCode 268. 丢失的数字 2. 题目描述 给定一个包含 [0, n] 范围内 n 个不同整数的数组 nums&#xff08;实际长度为 n&#xff09;&#xff0c;找出数组中缺失的那个数字。 示例&#xff1a; 输入&#xff1a;nums [3,0,1] → 输出&#xff1a;2&#xff08;…