PowerShell


Windows PowerShell(包括Windows PowerShell和PowerShell Core)是微软公司开发的任务自动化和配置管理架构,由在.NET Framework和后来的.NET上构建的命令行界面壳层相关脚本语言组成,最初仅仅是Windows组件,后于2016年8月18日开源并提供跨平台支持(Core分支版本)。采用MIT许可证授权(但Windows组件仍然是专有的)。

在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET类。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI/COM对象)实例化。UNIX系统一直有着功能强大的壳程序(Shell),Windows PowerShell的诞生就是要提供功能相当于UNIX系统的命令行壳程序(例如:sh、bash或csh),同时也内置脚本语言以及辅助脚本程序的工具。 做为一个跨平台的 (Windows, Linux 和 OS X) 自动化和配置工具(框架),可以和已有的工具友好集成,特别优化用于处理结构化数据 (如 JSON, CSV, XML 等),REST APIs 以及对象模型。它包含一个命令行 Shell、一个关联的脚本语言以及一个用于处理 cmdlets 的框架;相当于 Linux 下的 Bash 以及 Shell 脚本编程语言。
特性
一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。
脚本语言简单易学,而且能支持现有的脚本程序和命令行工具。
内含129种称为cmdlet的标准工具,可用来处理常见的系统管理工作。
具备完整的扩展,独立软件商或开发者都能很容易的自行扩展。
进程间数据传递内容具有强类型特征。
PowerShell Core可以自动检测字符编码,自动识别Linux和Windows下的换行符,跨平台运行。
cmdlet是PowerShell的指令,发音念法为command-let。这相当于DOS或其他壳程序的内置指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如在线查询说明的cmdlet指令为get-help,名称的动词部分大致有get、set、add、remove等等(字母都不分大小写)。PowerShell ISE是Windows PowerShell的主机应用程序。在此程序中,可以在单个Windows GUI中运行命令、编辑与测试脚本。此程序具有多行编辑、Tab补齐、上下文相关帮助、语法着色、选择性执行等功能,而且还支持从右到左的书写顺序等功能。
基础
Windows PowerShell是以.NET Framework技术为基础,并且与现有的WSH保持回溯兼容,因此它的脚本程序不仅能访问.NET CLR,也能使用现有的COM技术。同时也包含了数种系统管理工具、简易且一致的语法,常见如登录数据库、WMI。Exchange Server 2007以及System Center Operations Manager 2007等服务器软件都将内置Windows PowerShell。
命令行 Shell
PowerShell 是新式命令 shell,其中包括其他常用 shell 的最佳功能;与大多数仅接受并返回文本的 shell 不同,PowerShell 接受并返回 .NET 对象。Shell 包括以下功能:
可靠的命令行历史记录
Tab 自动补全和命令预测
支持命令和参数别名
用于链接命令的管道
控制台内帮助系统,类似于 Unix man 页面
脚本语言
作为一种脚本语言,PowerShell 通常用于自动执行系统管理。 它还用于经常在 CI/CD 环境中生成、测试和部署解决方案。是在 .NET 公共语言运行时 (CLR) 上构建的。所有输入和输出都是 .NET 对象。无需分析文本输出即可从输出中提取信息。PowerShell 脚本语言包含以下功能:
可通过函数、类、脚本和模块进行扩展,多字节字符编码的支持。
便于输出的可扩展格式系统
用于创建动态类型的可扩展类型系统
对常用数据格式(例如 CSV、JSON 和 XML)的内置支持
命令清单:系统管理、文件操作、网络管理等
提示字符比较
与 Bash 的区别
与传统的CMD命令提示符的比较
对象管道:使用对象管道传递数据,而不是简单的文本流。这意味着输出的结果是结构化的对象,可以轻松地进行过滤、排序、选择等操作,使得数据处理更加灵活和强大。
强大的命令集合:提供了丰富而强大的命令集合,涵盖了系统管理、网络管理、安全管理等各个领域。这些命令不仅功能丰富,而且命名和参数设计合理,易于记忆和使用。
脚本编写和调试:支持脚本编写,可以编写复杂的自动化任务和系统管理脚本。同时,PowerShell提供了强大的调试工具,可以方便地进行脚本调试和错误排查。
集成.NET框架:基于.NET框架开发的,因此可以直接调用.NET框架中的各种功能和库,包括文件操作、数据库访问、XML处理等,为脚本编写提供了更广泛的支持。
交互式环境:提供了交互式的命令行环境,用户可以实时输入命令并查看结果,方便进行实时数据处理和调试。
跨平台支持:已经推出了PowerShell Core版本,支持跨平台运行在Windows、Linux和macOS等操作系统上,为跨平台开发和管理提供了便利。
安全性:提供了丰富的安全功能,包括执行策略、脚本签名、安全传输等,可以有效地保护系统免受恶意脚本的攻击。
扩展性:支持通过模块和插件扩展其功能,用户可以根据需要安装和使用各种第三方模块,满足不同场景下的需求。
与其他Microsoft产品的集成: PowerShell与其他Microsoft产品(如Active Directory、Exchange、SQL Server等)紧密集成,可以直接管理这些产品,提高了管理效率和一致性。
自动化任务:可以轻松地实现各种自动化任务,包括系统备份、日志记录、定时任务等,极大地提高了工作效率和系统稳定性。
社区支持:拥有庞大的社区和活跃的开发者社区,用户可以在社区中分享经验、获取帮助和解决问题,极大地提升了学习和使用的便利性。
跨平台开发和管理:Core版本支持跨平台运行,使得开发人员和系统管理员可以在不同的操作系统上使用相同的脚本和命令,提高了跨平台开发和管理的一致性和效率。
易于学习和使用:的语法设计简洁明了,易于学习和理解,即使是初学者也能快速上手。
与现有技术的无缝集成:可以与其他技术(如REST API、JSON、XML等)无缝集成,可以轻松地与现有的系统和服务进行交互。
多语言支持:支持多种语言,包括脚本语言、命令行语言和面向对象语言,可以根据需要选择合适的语言编写脚本和命令。
丰富的输出格式:支持多种输出格式,包括文本、表格、列表、XML、JSON等,可以根据需要选择合适的输出格式。
活跃的社区和资源:拥有庞大的社区和丰富的资源,包括官方文档、教程、示例代码等,用户可以轻松地获取帮助和解决问题。
持续更新和改进:Microsoft对PowerShell进行持续的更新和改进,不断引入新的功能和改进,保持了其在系统管理领域的领先地位。
这些优点使得PowerShell成为一种强大、灵活、易于学习和使用的管理工具,受到了广泛的认可和应用;被广泛应用于系统管理、自动化任务、开发工具等各个领域。
PowerShell具有强大的功能和灵活的操作方式,适用于各种系统管理、自动化任务和数据处理场景,是现代Windows系统管理的首选工具之一。
CMD(命令提示符)和PowerShell都是Windows操作系统中的命令行界面,但它们在功能和用法上有一些区别:
功能:
CMD是Windows的传统命令行工具,功能相对简单,主要用于执行基本的命令和批处理脚本。
PowerShell是由微软开发的更强大和灵活的命令行工具,基于.NET框架,支持更多的命令和功能,如对象管道、脚本编写、自动化任务等。
语法:
CMD使用的是基于文本的命令语法,命令和参数之间通常使用空格分隔。
PowerShell使用的是基于对象的命令语法,命令和参数之间通过管道传递对象,可以更灵活地处理数据。
脚本支持:
CMD支持批处理脚本(.bat或.cmd文件),但脚本编写和调试相对简单。
PowerShell支持更复杂的脚本编写,可以使用.NET框架中的各种功能和库,脚本更加强大和灵活。
扩展性:
PowerShell具有更好的扩展性,可以通过安装模块来增加新的功能和命令。
CMD的功能相对固定,扩展性较差。
PowerShell是Windows系统中推荐的命令行工具,特别适用于系统管理和自动化任务,而CMD则更适合执行简单的命令和批处理脚本。
CMD和PowerShell在以下方面有所侧重:
功能和灵活性:
CMD主要侧重于执行基本的命令和批处理脚本,功能相对简单。
PowerShell侧重于提供更强大和灵活的命令行环境,支持更多的命令和功能,包括对象管道、脚本编写、自动化任务等。
语法和操作方式:
CMD使用基于文本的命令语法,命令和参数之间通常使用空格分隔,操作相对直接。
PowerShell使用基于对象的命令语法,命令和参数之间通过管道传递对象,操作更为灵活,可以进行更复杂的数据处理和操作。
脚本编写和执行:
CMD支持批处理脚本,但脚本编写和调试相对简单,功能有限。
PowerShell支持更复杂的脚本编写,可以利用.NET框架中的各种功能和库,脚本更加强大和灵活,适用于更广泛的应用场景。
系统管理和自动化:
PowerShell在系统管理和自动化方面表现更加出色,可以轻松地执行各种系统管理任务,进行批量操作和自动化流程设计。
CMD虽然也可以执行一些系统管理任务,但功能和灵活性较为有限,不如PowerShell方便和高效。
PowerShell在功能、灵活性和自动化方面具有明显优势,适合于需要更复杂操作和系统管理的场景,而CMD则更适用于执行简单的命令和批处理脚本。
CMD(命令提示符)作为Windows操作系统的命令行解释器,从Windows NT起就一直存在,并且一直被广泛使用。尽管在功能和易用性方面不如PowerShell等现代化的工具,但CMD仍然有其存在的合理性,特别是对于一些传统的系统管理任务和特定的应用场景。尽管如此,随着技术的不断发展和用户需求的变化,CMD可能会逐渐退出历史舞台,主要原因包括:
功能限制:CMD的功能相对较为有限,缺乏一些现代化的特性和功能,无法满足复杂系统管理和自动化需求。
安全性:CMD存在一些安全性隐患,容易受到恶意脚本和攻击的威胁,而现代化的工具如PowerShell等提供了更好的安全保障。
用户体验:CMD的用户体验相对较差,命令语法繁琐,交互性不足,难以满足用户对于简洁、直观的操作界面的需求。
技术趋势:随着云计算、容器化、自动化等技术的普及,对于更强大、更灵活的管理工具的需求日益增加,而CMD已经无法满足这些需求。
虽然CMD可能会逐渐退出历史舞台,但它可能会在某些特定的场景和遗留系统中继续存在一段时间。同时Microsoft也在推动用户转向更现代化的管理工具,如PowerShell等。
查看 PowerShell 版本号
PowerShell 是 Windows 用户进行系统管理和任务自动化的利器。它与「命令提示符」类似,但功能更加强大,能够通过命令行管理几乎所有 Windows 系统和 Microsoft 产品的设置。
方法 1:使用命令查看 PowerShell 版本
1.按Windows + R快捷键,打开「运行」对话框,输入powershell并按回车,打开 Windows PowerShell。
2.在 PowerShell 窗口中,执行以下命令:
$PSVersionTable
该变量是 PowerShell 中一个非常特殊的系统变量,它是一个哈希表,主要存储 PowerShell 环境的版本信息。这是windows 11 家庭版上的输出:
Name Value
---- -----
PSVersion 5.1.22621.4391
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.4391
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Get-Host cmdlet 命令用于获取当前主机程序的对象,它可以提供包括版本号在内的 PowerShell 环境信息。
$host 变量是 PowerShell 中的一个自动变量,代表当前会话的主机对象。这个对象同样包含了 PowerShell 环境的相关信息:
方法 2:通过注册表查看 PowerShell 版本号
Windows 注册表是存储系统底层配置的重要数据库,也可以用于查看 PowerShell 版本。
1.按Windows + R快捷键打开「运行」对话框,输入regedit并按回车,打开注册表编辑器。
2.导航到以下路径:
查看 PowerShell 5 版本号,查看PowerShellVersion字符串值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
查看 PowerShell 7 版本号,查看SemanticVersion字符串值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions
小结一下上述检查当前 PowerShell 版本的方法,基本上有以下 4 种:
(Get-Host).Version
$host.Version
$PSVersionTable.PSVersion(建议用此方法)
查看 Registry 注册表
第 1 种方式是先使用 Get-Host 取得执行 PowerShell Engine 的宿主环境,然后取出记录在宿主中的 Version 属性资讯,这方法相当容易理解,但有时候宿主可能会用到不同版本的 PowerShell Engine,而且用这支 cmdlet 来取得远端伺服器的 PowerShell 版本时,会有些奇怪,这要稍微注意。
第 2 种方式是使用 PowerShell 启动时自动建立的变数 $host,基本上这就是用 Get-Host 取得资讯的,所以状况会跟他一样。
第 3 种方式是使用 $PSVersionTable 这个自动建立的变数,这个变数是唯读且会回传当前 PowerShell Engine 版本 PSVersion,而且除了 PowerShell 版本之外,还会提供 PSEdition 告诉你是哪一种类型的 PowerShell,例如是 Desktop (Windows PowerShell) 还是 Core (PowerShell Core)。
第 4 种方式是直接去 Windows Registry 注册表查询,基本上就是去注册表找 HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine 路径下的 PowerShellVersion 设定值,也因为是去注册表查,所以这方法可以不用 PowerShell 指令也查得到,例如用 reg 或直接开启 Windows Registry 视窗介面查询。
关于命令语法 - PowerShell | Microsoft Learn
power shell 5.1
power shell 7.2
power shell 7.3
power shell 7.4
power shell 7.5
PowerShell 5.1、7.2~7.5之间的主要区别:
跨平台支持:
5.1:仅在Windows平台上可用。
7.2~5:支持跨平台,在Windows、Linux和macOS等操作系统上都可以运行。
基于的.NET平台:
5.1:基于.NET Framework。
7.2~5:基于.NET Core(现已升级为.NET 5和.NET 6)。
功能特性:
5.1:功能相对较为有限,缺少一些现代化的功能特性。
7.2~5:新增了许多功能特性和改进,包括更好的性能、新的语言特性、更丰富的模块支持等。
性能和稳定性:
5.1:较老的版本,可能性能和稳定性相对较低。
7.2~5:通常具有更好的性能和稳定性,尤其是在新版本中进行了各种优化和改进。
模块支持:
5.1:由于基于.NET Framework,一些旧版模块可能不兼容或者需要特定的更新才能在新的环境中运行。
7.2~5:由于基于.NET Core/.NET 5/.NET 6,许多现有的模块都已经进行了更新以支持新的框架,因此在新版本中更容易找到和使用最新的模块。
安全性:
5.1:较老的版本,可能存在一些安全性漏洞。
7.2~5:随着版本的更新,通常会修复已知的安全漏洞,并加强安全性功能。
社区支持和发展:
5.1:作为Windows操作系统的一部分,有着庞大的用户群体和社区支持,但主要局限于Windows平台。
7.2~5:由于跨平台特性,吸引了更广泛的用户群体,并且在开源社区中有着活跃的贡献者和开发者,因此在功能增强和问题修复方面更具活力。
版本发布周期和支持周期:
5.1:作为Windows操作系统的一部分,其支持周期通常与Windows操作系统的生命周期相同,而Windows 10的支持周期为10年。
7.2~5:作为跨平台的开源项目,其发布周期较为灵活,通常会在一定时间间隔内发布新版本。在发布新版本后,通常会提供一定期限的支持,包括bug修复、安全更新等。具体的支持周期可根据官方发布的通知和文档进行查询。
性能改进和优化:
5.1:较老的版本,可能存在性能瓶颈和优化空间。
7.2~5:随着版本的更新,通常会引入性能改进和优化,以提高执行效率、降低资源消耗等方面的性能指标。
平台兼容性:
5.1:仅适用于一些特定版本的Windows操作系统。
7.2~5:由于跨平台特性,可以在Windows、Linux和macOS等多种操作系统上运行,并且可以通过一致的语法和功能实现跨平台的任务自动化和配置管理。
用户体验改进:
5.1:较为传统的命令行界面,可能缺乏一些现代化的用户体验功能。
7.2~5:随着版本的更新,通常会引入用户体验改进,包括命令自动完成、语法高亮、多行编辑等功能,以提高用户的工作效率和舒适度。
社区贡献和生态系统:
5.1:作为Windows操作系统的一部分,其生态系统相对封闭,主要由微软及其合作伙伴维护和贡献。
7.2~5:作为跨平台的开源项目,吸引了更广泛的社区贡献者和生态系统,可以从开源社区中获得更多的模块、工具和文档,以满足不同用户的需求和场景。
随着PowerShell版本的更新,会带来更多的功能特性、性能改进、跨平台支持和安全性增强,因此推荐使用最新版本以获得更好的体验和功能支持。
最新版本:6
PowerShell Core 6.0于2018年1月发布,支持多平台开发。另有PowerShell v6.0 官方文档中文版。
微软旗下的PowerShell团队正式宣布推出PowerShell Core 6.0,它是跨平台的(Windows,MacOS和Linux),是开源的,并且由异构环境和混合云构建,使用 .NET Core 2.0 作为其运行时。非常诡异的是这明明是Core的第一个版本,但是却用了一个6.0后缀。
PowerShell Core基于.NET Core之上构建开源项目,可在Windows,MacOS、Linux、Ubuntu、Debian、OpenSUSE等多个平台上运行。这也意味着现行的PowerShell分为了两个版本:基于.NET Framework的Windows PowerShell和基于.NET Core的 PowerShell Core,就微软目前的动向来看,这两个版本将会并行工作。
PowerShell(包括Windows PowerShell and PowerShell Core)是微软公司开发的任务自动化和配置管理框架,由.NET Framework和.NET Core是构建的命令行界面壳层相关脚本语言组成,最初仅Windows组件,后在2016年8月18日开源并跨平台支持,主要用户为IT 从业人员、程序员和高级数据库用户。
更新内容:从 .NET Framework 移到 .NET Core,使用 .NET Core 2.0 作为其运行时,其使 PowerShell Core 能够在多个平台(Windows,MacOS和Linux)上工作。PowerShell Core 还公开了由 .NET Core 2.0 提供的用于 PowerShell cmdlet 和脚本上的 API。Windows PowerShell 使用 .NET Framework 运行时来托管 PowerShell 引擎,公开了 .NET Framework 提供的 API 集。
最新版本:7.3
v7.3 已于2022年11月中旬正式发布更新,构建在 .NET 7 之上,作为非 LTS 版本支持 18 个月。v7.2 仍然是 PowerShell 的 LTS(支持 3 年)版本。主题仍是成为一个出色的 shell 环境,主要带来如下优化(以下的 “本机命令” 是指不是 PowerShell cmdlet 或函数的可执行文件):
改进本机命令参数传递
在涉及引号时,Windows 和 Linux/macOS 在处理本机命令参数方面存在巨大差异。PowerShell 7.3 添加了一项新功能 $PSNativeCommandArgumentPassing 来控制 PowerShell 如何将参数传递给本机命令。使本机命令更像 cmdlet 的另一个方面是错误处理。与 cmdlet 不同,本机命令使用退出代码来传达成功或失败。
本机命令的错误处理一致性
stderr通常用于错误消息,也用于进度、信息、警告等,因为本机命令没有 PowerShell cmdlet 所具有的丰富流。尽管非零退出代码并不总是表示错误,但本机命令的约定是非零退出代码通常表示错误。现在有一项新功能 $PSNativeCommandUseErrorActionPreference ,允许让 PowerShell 将非零退出代码视为错误。这意味着无论 cmdlet 有错误还是本机命令有非零退出代码,都可以将 $ErrorActionPreference 设置成 Stop ,并让 PowerShell 停止执行。
该功能简化了以前在执行本机命令后必须检查 $LASTEXITCODE 的脚本,或将其包装在辅助函数中的复杂步骤。有关 PowerShell 7.3 的详细信息可在微软博客中查阅,下一个版本 PowerShell 7.4 将是下一个 LTS 版本,预计明年将在 .NET 8 上构建。
最新版本:7.4
v7.4.1 现已于2024年1月中旬发布,更新内容如下:
修复使用 interpolated strings 的 Group-Object 输出
修复 Start-Process -PassThru 以确保返回的 Process 对象可以访问 ExitCode 属性
修复 DisplayRoot 网络 PSDrive 的渲染
确保 logging WDAC ETW events 时确保文件名不为空
修复 WDAC audit logging feature 引入的四个回归
将 .NET 8 升级到版本 8.0.101
更新 v7.4.1 的 .NET SDK 和依赖项
更新包依赖项与修复 tab completion tests
在 runtimeconfig.json 中设置 rollForwardOnNoCandidateFx,使其仅在次要版本和补丁版本上前滚
删除发布到 packages.microsoft.com 的 RHEL7,因为它不再受支持
v7.4.7 LTS 将 .NET SDK 升级至 8.0.405
[release/v7.4] 更新发布分支,设置为传递性:true(次要更新)
[release/v7.4] 修复回迁错误
修复 Container Linux CI 中种子值的最大限制问题
添加仅允许使用 NuGet 提供源的功能
将Microsoft.PowerShell.PSResourceGet更新至1.0.6
因池变更调整路径配置
更新池以支持 “Publish BuildInfo” 任务
添加缺失的回迁和新修复功能
移植 Blob 复制功能相关的变更
更新防火墙以支持监控功能
修复 release-MakeBlobPublic.yml 文件中的拼写错误
更新 7.4.6 的变更日志并添加发布信息
修复发布管道中的回迁问题
删除重复参数
[release/v7.4] 确保AssemblyVersion对于 7.4.7 及以上维护性版本保持一致
为 Windows CI 添加*.props文件并对路径过滤器进行排序调整
使用最新版本的 Windows 签名 NuGet 包
使用工作负载身份服务连接从存储帐户下载 makeappx 工具
更新 Windows CI 的路径过滤器
修复发布管道错误并切换至 KS3
添加在还原失败时捕获 MSBuild 二进制日志的功能
从包构建中下载包以生成 vpack
添加跳过验证包步骤的参数
修复 GitHub 发布时变更日志内容抓取问题
在发布 NuGet 阶段添加工具包下载功能
在 API 扫描(APIScan)构建过程中新增 CodeQL 扫描支持
更新 Deploy Box
7.4 不再支持 Windows 7,安装时会提示 "Supported only on Windows 8.1 and above"
最新版本:7.5
v7.5.0 改进了构建和打包改进
将 .NET SDK 升级至 9.0.102
在发布 NuGet 阶段添加工具包下载功能
修复在 GitHub 发布时抓取更新日志(Changelog)内容的问题
将版本构建标记为最新稳定版
[release/v7.5] 更新发布分支
将 Microsoft.PowerShell.PSResourceGet 更新至 1.1.0
确保维护性版本中 AssemblyVersion 保持不变
更新 Deploy Box(部署箱)
更新机器池,用于复制 Blob 和上传构建信息(buildinfo)阶段
更新 NuGet 发布管道以使用 Deploy Box
为 GitHub 发布和 NuGet 发布管道添加 Deploy Box 的产品配置路径
项目主页:https://github.com/PowerShell

在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET类。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI/COM对象)实例化。UNIX系统一直有着功能强大的壳程序(Shell),Windows PowerShell的诞生就是要提供功能相当于UNIX系统的命令行壳程序(例如:sh、bash或csh),同时也内置脚本语言以及辅助脚本程序的工具。 做为一个跨平台的 (Windows, Linux 和 OS X) 自动化和配置工具(框架),可以和已有的工具友好集成,特别优化用于处理结构化数据 (如 JSON, CSV, XML 等),REST APIs 以及对象模型。它包含一个命令行 Shell、一个关联的脚本语言以及一个用于处理 cmdlets 的框架;相当于 Linux 下的 Bash 以及 Shell 脚本编程语言。
特性
一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。
脚本语言简单易学,而且能支持现有的脚本程序和命令行工具。
内含129种称为cmdlet的标准工具,可用来处理常见的系统管理工作。
具备完整的扩展,独立软件商或开发者都能很容易的自行扩展。
进程间数据传递内容具有强类型特征。
PowerShell Core可以自动检测字符编码,自动识别Linux和Windows下的换行符,跨平台运行。
cmdlet是PowerShell的指令,发音念法为command-let。这相当于DOS或其他壳程序的内置指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如在线查询说明的cmdlet指令为get-help,名称的动词部分大致有get、set、add、remove等等(字母都不分大小写)。PowerShell ISE是Windows PowerShell的主机应用程序。在此程序中,可以在单个Windows GUI中运行命令、编辑与测试脚本。此程序具有多行编辑、Tab补齐、上下文相关帮助、语法着色、选择性执行等功能,而且还支持从右到左的书写顺序等功能。
基础
Windows PowerShell是以.NET Framework技术为基础,并且与现有的WSH保持回溯兼容,因此它的脚本程序不仅能访问.NET CLR,也能使用现有的COM技术。同时也包含了数种系统管理工具、简易且一致的语法,常见如登录数据库、WMI。Exchange Server 2007以及System Center Operations Manager 2007等服务器软件都将内置Windows PowerShell。
命令行 Shell
PowerShell 是新式命令 shell,其中包括其他常用 shell 的最佳功能;与大多数仅接受并返回文本的 shell 不同,PowerShell 接受并返回 .NET 对象。Shell 包括以下功能:
可靠的命令行历史记录
Tab 自动补全和命令预测
支持命令和参数别名
用于链接命令的管道
控制台内帮助系统,类似于 Unix man 页面
脚本语言
作为一种脚本语言,PowerShell 通常用于自动执行系统管理。 它还用于经常在 CI/CD 环境中生成、测试和部署解决方案。是在 .NET 公共语言运行时 (CLR) 上构建的。所有输入和输出都是 .NET 对象。无需分析文本输出即可从输出中提取信息。PowerShell 脚本语言包含以下功能:
可通过函数、类、脚本和模块进行扩展,多字节字符编码的支持。
便于输出的可扩展格式系统
用于创建动态类型的可扩展类型系统
对常用数据格式(例如 CSV、JSON 和 XML)的内置支持
命令清单:系统管理、文件操作、网络管理等
提示字符比较
PowerShell(命令行) | PowerShell(别名) | 命令提示符 | Unix shell | 描述 |
---|---|---|---|---|
Get-ChildItem | gci, dir, ls | dir | ls | 列出目前或指定文件夹中的所有文件和文件夹 |
Test-Connection[a] | ping | ping | ping | 从目前电脑向指定电脑发送Ping,或指示另一台电脑这样做 |
Get-Content | gc, type, cat | type | cat | 获取文件内容 |
Get-Command | gcm | help | type, which,compgen | 列出可用的命令 |
Get-Help | help, man | help | apropos,man | 在控制台上打印命令的文档 |
Clear-Host | cls, clear | cls | clear | 清除屏幕[b] |
Copy-Item | cpi, copy, cp | copy, xcopy, robocopy | cp | 将文件和文件夹复制到另一个位置 |
Move-Item | mi, move, mv | move | mv | 将文件和文件夹移动到新位置 |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, erase, rmdir, rd | rm, rmdir | 删除文件或文件夹 |
Rename-Item | rni, ren, mv | ren, rename | mv | 重命名单个文件、文件夹、硬链接或符号链接 |
Get-Location | gl, cd, pwd | cd | pwd | 显示工作路径(目前文件夹) |
Pop-Location | popd | popd | popd | 将工作路径更改为最近推送到堆栈上的位置 |
Push-Location | pushd | pushd | pushd | 将工作路径存储到堆栈中 |
Set-Location | sl, cd, chdir | cd, chdir | cd | 改变工作路径 |
Tee-Object | tee | 不适用 | tee | 将输入管道传输到文件或变量,并沿管道传递输入 |
Write-Output | echo, write | echo | echo | 将字符串或其他对像打印到标准流 |
Get-Process | gps, ps | tlist, tasklist | ps | 列出所有正在执行的进程 |
Stop-Process | spps, kill | kill | kill | 停止正在执行的进程 |
Select-String | sls | findstr | find, grep | 打印与模式匹配的行 |
Set-Variable | sv, set | set | env, export, set, setenv | 创建或更改环境变量的内容 |
Invoke-WebRequest | iwr, | curl | wget, curl | 获取互联网上的网页内容 |
与 Bash 的区别
Bash | PowerShell | Description |
---|---|---|
ls | dir, Get-ChildItem | List files and folders |
tree | dir -Recurse | List all files and folders |
cd | cd, Set-Location | Change directory |
pwd | pwd, $pwd, Get-Location | Show working directory |
clear, Ctrl+L, reset | cls, clear | Clear screen |
mkdir | New-Item -ItemType Directory | Create a new folder |
touch test.txt | New-Item -Path test.txt | Create a new empty file |
cat test1.txt test2.txt | Get-Content test1.txt, test2.txt | Display files contents |
cp ./source.txt ./dest/dest.txt | Copy-Item source.txt dest/dest.txt | Copy a file |
cp -r ./source ./dest | Copy-Item ./source ./dest -Recurse | Recursively copy from one folder to another |
mv ./source.txt ./dest/dest.txt | Move-Item ./source.txt ./dest/dest.txt | Move a file to other folder |
rm test.txt | Remove-Item test.txt | Delete a file |
rm -r <folderName> | Remove-Item <folderName> -Recurse | Delete a folder |
find -name build* | Get-ChildItem build* -Recurse | Find a file or folder starting with 'build' |
grep -Rin "sometext" --include="*.cs" | Get-ChildItem -Recurse -Filter *.cs | Select-String -Pattern "sometext" | Recursively case-insensitive search for text in files |
与传统的CMD命令提示符的比较
对象管道:使用对象管道传递数据,而不是简单的文本流。这意味着输出的结果是结构化的对象,可以轻松地进行过滤、排序、选择等操作,使得数据处理更加灵活和强大。
强大的命令集合:提供了丰富而强大的命令集合,涵盖了系统管理、网络管理、安全管理等各个领域。这些命令不仅功能丰富,而且命名和参数设计合理,易于记忆和使用。
脚本编写和调试:支持脚本编写,可以编写复杂的自动化任务和系统管理脚本。同时,PowerShell提供了强大的调试工具,可以方便地进行脚本调试和错误排查。
集成.NET框架:基于.NET框架开发的,因此可以直接调用.NET框架中的各种功能和库,包括文件操作、数据库访问、XML处理等,为脚本编写提供了更广泛的支持。
交互式环境:提供了交互式的命令行环境,用户可以实时输入命令并查看结果,方便进行实时数据处理和调试。
跨平台支持:已经推出了PowerShell Core版本,支持跨平台运行在Windows、Linux和macOS等操作系统上,为跨平台开发和管理提供了便利。
安全性:提供了丰富的安全功能,包括执行策略、脚本签名、安全传输等,可以有效地保护系统免受恶意脚本的攻击。
扩展性:支持通过模块和插件扩展其功能,用户可以根据需要安装和使用各种第三方模块,满足不同场景下的需求。
与其他Microsoft产品的集成: PowerShell与其他Microsoft产品(如Active Directory、Exchange、SQL Server等)紧密集成,可以直接管理这些产品,提高了管理效率和一致性。
自动化任务:可以轻松地实现各种自动化任务,包括系统备份、日志记录、定时任务等,极大地提高了工作效率和系统稳定性。
社区支持:拥有庞大的社区和活跃的开发者社区,用户可以在社区中分享经验、获取帮助和解决问题,极大地提升了学习和使用的便利性。
跨平台开发和管理:Core版本支持跨平台运行,使得开发人员和系统管理员可以在不同的操作系统上使用相同的脚本和命令,提高了跨平台开发和管理的一致性和效率。
易于学习和使用:的语法设计简洁明了,易于学习和理解,即使是初学者也能快速上手。
与现有技术的无缝集成:可以与其他技术(如REST API、JSON、XML等)无缝集成,可以轻松地与现有的系统和服务进行交互。
多语言支持:支持多种语言,包括脚本语言、命令行语言和面向对象语言,可以根据需要选择合适的语言编写脚本和命令。
丰富的输出格式:支持多种输出格式,包括文本、表格、列表、XML、JSON等,可以根据需要选择合适的输出格式。
活跃的社区和资源:拥有庞大的社区和丰富的资源,包括官方文档、教程、示例代码等,用户可以轻松地获取帮助和解决问题。
持续更新和改进:Microsoft对PowerShell进行持续的更新和改进,不断引入新的功能和改进,保持了其在系统管理领域的领先地位。
这些优点使得PowerShell成为一种强大、灵活、易于学习和使用的管理工具,受到了广泛的认可和应用;被广泛应用于系统管理、自动化任务、开发工具等各个领域。
PowerShell具有强大的功能和灵活的操作方式,适用于各种系统管理、自动化任务和数据处理场景,是现代Windows系统管理的首选工具之一。
CMD(命令提示符)和PowerShell都是Windows操作系统中的命令行界面,但它们在功能和用法上有一些区别:
功能:
CMD是Windows的传统命令行工具,功能相对简单,主要用于执行基本的命令和批处理脚本。
PowerShell是由微软开发的更强大和灵活的命令行工具,基于.NET框架,支持更多的命令和功能,如对象管道、脚本编写、自动化任务等。
语法:
CMD使用的是基于文本的命令语法,命令和参数之间通常使用空格分隔。
PowerShell使用的是基于对象的命令语法,命令和参数之间通过管道传递对象,可以更灵活地处理数据。
脚本支持:
CMD支持批处理脚本(.bat或.cmd文件),但脚本编写和调试相对简单。
PowerShell支持更复杂的脚本编写,可以使用.NET框架中的各种功能和库,脚本更加强大和灵活。
扩展性:
PowerShell具有更好的扩展性,可以通过安装模块来增加新的功能和命令。
CMD的功能相对固定,扩展性较差。
PowerShell是Windows系统中推荐的命令行工具,特别适用于系统管理和自动化任务,而CMD则更适合执行简单的命令和批处理脚本。
CMD和PowerShell在以下方面有所侧重:
功能和灵活性:
CMD主要侧重于执行基本的命令和批处理脚本,功能相对简单。
PowerShell侧重于提供更强大和灵活的命令行环境,支持更多的命令和功能,包括对象管道、脚本编写、自动化任务等。
语法和操作方式:
CMD使用基于文本的命令语法,命令和参数之间通常使用空格分隔,操作相对直接。
PowerShell使用基于对象的命令语法,命令和参数之间通过管道传递对象,操作更为灵活,可以进行更复杂的数据处理和操作。
脚本编写和执行:
CMD支持批处理脚本,但脚本编写和调试相对简单,功能有限。
PowerShell支持更复杂的脚本编写,可以利用.NET框架中的各种功能和库,脚本更加强大和灵活,适用于更广泛的应用场景。
系统管理和自动化:
PowerShell在系统管理和自动化方面表现更加出色,可以轻松地执行各种系统管理任务,进行批量操作和自动化流程设计。
CMD虽然也可以执行一些系统管理任务,但功能和灵活性较为有限,不如PowerShell方便和高效。
PowerShell在功能、灵活性和自动化方面具有明显优势,适合于需要更复杂操作和系统管理的场景,而CMD则更适用于执行简单的命令和批处理脚本。
CMD(命令提示符)作为Windows操作系统的命令行解释器,从Windows NT起就一直存在,并且一直被广泛使用。尽管在功能和易用性方面不如PowerShell等现代化的工具,但CMD仍然有其存在的合理性,特别是对于一些传统的系统管理任务和特定的应用场景。尽管如此,随着技术的不断发展和用户需求的变化,CMD可能会逐渐退出历史舞台,主要原因包括:
功能限制:CMD的功能相对较为有限,缺乏一些现代化的特性和功能,无法满足复杂系统管理和自动化需求。
安全性:CMD存在一些安全性隐患,容易受到恶意脚本和攻击的威胁,而现代化的工具如PowerShell等提供了更好的安全保障。
用户体验:CMD的用户体验相对较差,命令语法繁琐,交互性不足,难以满足用户对于简洁、直观的操作界面的需求。
技术趋势:随着云计算、容器化、自动化等技术的普及,对于更强大、更灵活的管理工具的需求日益增加,而CMD已经无法满足这些需求。
虽然CMD可能会逐渐退出历史舞台,但它可能会在某些特定的场景和遗留系统中继续存在一段时间。同时Microsoft也在推动用户转向更现代化的管理工具,如PowerShell等。
查看 PowerShell 版本号
PowerShell 是 Windows 用户进行系统管理和任务自动化的利器。它与「命令提示符」类似,但功能更加强大,能够通过命令行管理几乎所有 Windows 系统和 Microsoft 产品的设置。
方法 1:使用命令查看 PowerShell 版本
1.按Windows + R快捷键,打开「运行」对话框,输入powershell并按回车,打开 Windows PowerShell。
2.在 PowerShell 窗口中,执行以下命令:
$PSVersionTable
该变量是 PowerShell 中一个非常特殊的系统变量,它是一个哈希表,主要存储 PowerShell 环境的版本信息。这是windows 11 家庭版上的输出:
Name Value
---- -----
PSVersion 5.1.22621.4391
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.4391
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Get-Host cmdlet 命令用于获取当前主机程序的对象,它可以提供包括版本号在内的 PowerShell 环境信息。
$host 变量是 PowerShell 中的一个自动变量,代表当前会话的主机对象。这个对象同样包含了 PowerShell 环境的相关信息:
方法 2:通过注册表查看 PowerShell 版本号
Windows 注册表是存储系统底层配置的重要数据库,也可以用于查看 PowerShell 版本。
1.按Windows + R快捷键打开「运行」对话框,输入regedit并按回车,打开注册表编辑器。
2.导航到以下路径:
查看 PowerShell 5 版本号,查看PowerShellVersion字符串值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
查看 PowerShell 7 版本号,查看SemanticVersion字符串值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions
小结一下上述检查当前 PowerShell 版本的方法,基本上有以下 4 种:
(Get-Host).Version
$host.Version
$PSVersionTable.PSVersion(建议用此方法)
查看 Registry 注册表
第 1 种方式是先使用 Get-Host 取得执行 PowerShell Engine 的宿主环境,然后取出记录在宿主中的 Version 属性资讯,这方法相当容易理解,但有时候宿主可能会用到不同版本的 PowerShell Engine,而且用这支 cmdlet 来取得远端伺服器的 PowerShell 版本时,会有些奇怪,这要稍微注意。
第 2 种方式是使用 PowerShell 启动时自动建立的变数 $host,基本上这就是用 Get-Host 取得资讯的,所以状况会跟他一样。
第 3 种方式是使用 $PSVersionTable 这个自动建立的变数,这个变数是唯读且会回传当前 PowerShell Engine 版本 PSVersion,而且除了 PowerShell 版本之外,还会提供 PSEdition 告诉你是哪一种类型的 PowerShell,例如是 Desktop (Windows PowerShell) 还是 Core (PowerShell Core)。
第 4 种方式是直接去 Windows Registry 注册表查询,基本上就是去注册表找 HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine 路径下的 PowerShellVersion 设定值,也因为是去注册表查,所以这方法可以不用 PowerShell 指令也查得到,例如用 reg 或直接开启 Windows Registry 视窗介面查询。
关于命令语法 - PowerShell | Microsoft Learn
power shell 5.1
power shell 7.2
power shell 7.3
power shell 7.4
power shell 7.5
PowerShell 5.1、7.2~7.5之间的主要区别:
跨平台支持:
5.1:仅在Windows平台上可用。
7.2~5:支持跨平台,在Windows、Linux和macOS等操作系统上都可以运行。
基于的.NET平台:
5.1:基于.NET Framework。
7.2~5:基于.NET Core(现已升级为.NET 5和.NET 6)。
功能特性:
5.1:功能相对较为有限,缺少一些现代化的功能特性。
7.2~5:新增了许多功能特性和改进,包括更好的性能、新的语言特性、更丰富的模块支持等。
性能和稳定性:
5.1:较老的版本,可能性能和稳定性相对较低。
7.2~5:通常具有更好的性能和稳定性,尤其是在新版本中进行了各种优化和改进。
模块支持:
5.1:由于基于.NET Framework,一些旧版模块可能不兼容或者需要特定的更新才能在新的环境中运行。
7.2~5:由于基于.NET Core/.NET 5/.NET 6,许多现有的模块都已经进行了更新以支持新的框架,因此在新版本中更容易找到和使用最新的模块。
安全性:
5.1:较老的版本,可能存在一些安全性漏洞。
7.2~5:随着版本的更新,通常会修复已知的安全漏洞,并加强安全性功能。
社区支持和发展:
5.1:作为Windows操作系统的一部分,有着庞大的用户群体和社区支持,但主要局限于Windows平台。
7.2~5:由于跨平台特性,吸引了更广泛的用户群体,并且在开源社区中有着活跃的贡献者和开发者,因此在功能增强和问题修复方面更具活力。
版本发布周期和支持周期:
5.1:作为Windows操作系统的一部分,其支持周期通常与Windows操作系统的生命周期相同,而Windows 10的支持周期为10年。
7.2~5:作为跨平台的开源项目,其发布周期较为灵活,通常会在一定时间间隔内发布新版本。在发布新版本后,通常会提供一定期限的支持,包括bug修复、安全更新等。具体的支持周期可根据官方发布的通知和文档进行查询。
性能改进和优化:
5.1:较老的版本,可能存在性能瓶颈和优化空间。
7.2~5:随着版本的更新,通常会引入性能改进和优化,以提高执行效率、降低资源消耗等方面的性能指标。
平台兼容性:
5.1:仅适用于一些特定版本的Windows操作系统。
7.2~5:由于跨平台特性,可以在Windows、Linux和macOS等多种操作系统上运行,并且可以通过一致的语法和功能实现跨平台的任务自动化和配置管理。
用户体验改进:
5.1:较为传统的命令行界面,可能缺乏一些现代化的用户体验功能。
7.2~5:随着版本的更新,通常会引入用户体验改进,包括命令自动完成、语法高亮、多行编辑等功能,以提高用户的工作效率和舒适度。
社区贡献和生态系统:
5.1:作为Windows操作系统的一部分,其生态系统相对封闭,主要由微软及其合作伙伴维护和贡献。
7.2~5:作为跨平台的开源项目,吸引了更广泛的社区贡献者和生态系统,可以从开源社区中获得更多的模块、工具和文档,以满足不同用户的需求和场景。
随着PowerShell版本的更新,会带来更多的功能特性、性能改进、跨平台支持和安全性增强,因此推荐使用最新版本以获得更好的体验和功能支持。
最新版本:6
PowerShell Core 6.0于2018年1月发布,支持多平台开发。另有PowerShell v6.0 官方文档中文版。
微软旗下的PowerShell团队正式宣布推出PowerShell Core 6.0,它是跨平台的(Windows,MacOS和Linux),是开源的,并且由异构环境和混合云构建,使用 .NET Core 2.0 作为其运行时。非常诡异的是这明明是Core的第一个版本,但是却用了一个6.0后缀。
PowerShell Core基于.NET Core之上构建开源项目,可在Windows,MacOS、Linux、Ubuntu、Debian、OpenSUSE等多个平台上运行。这也意味着现行的PowerShell分为了两个版本:基于.NET Framework的Windows PowerShell和基于.NET Core的 PowerShell Core,就微软目前的动向来看,这两个版本将会并行工作。
PowerShell(包括Windows PowerShell and PowerShell Core)是微软公司开发的任务自动化和配置管理框架,由.NET Framework和.NET Core是构建的命令行界面壳层相关脚本语言组成,最初仅Windows组件,后在2016年8月18日开源并跨平台支持,主要用户为IT 从业人员、程序员和高级数据库用户。
更新内容:从 .NET Framework 移到 .NET Core,使用 .NET Core 2.0 作为其运行时,其使 PowerShell Core 能够在多个平台(Windows,MacOS和Linux)上工作。PowerShell Core 还公开了由 .NET Core 2.0 提供的用于 PowerShell cmdlet 和脚本上的 API。Windows PowerShell 使用 .NET Framework 运行时来托管 PowerShell 引擎,公开了 .NET Framework 提供的 API 集。
最新版本:7.3
v7.3 已于2022年11月中旬正式发布更新,构建在 .NET 7 之上,作为非 LTS 版本支持 18 个月。v7.2 仍然是 PowerShell 的 LTS(支持 3 年)版本。主题仍是成为一个出色的 shell 环境,主要带来如下优化(以下的 “本机命令” 是指不是 PowerShell cmdlet 或函数的可执行文件):
改进本机命令参数传递
在涉及引号时,Windows 和 Linux/macOS 在处理本机命令参数方面存在巨大差异。PowerShell 7.3 添加了一项新功能 $PSNativeCommandArgumentPassing 来控制 PowerShell 如何将参数传递给本机命令。使本机命令更像 cmdlet 的另一个方面是错误处理。与 cmdlet 不同,本机命令使用退出代码来传达成功或失败。
本机命令的错误处理一致性
stderr通常用于错误消息,也用于进度、信息、警告等,因为本机命令没有 PowerShell cmdlet 所具有的丰富流。尽管非零退出代码并不总是表示错误,但本机命令的约定是非零退出代码通常表示错误。现在有一项新功能 $PSNativeCommandUseErrorActionPreference ,允许让 PowerShell 将非零退出代码视为错误。这意味着无论 cmdlet 有错误还是本机命令有非零退出代码,都可以将 $ErrorActionPreference 设置成 Stop ,并让 PowerShell 停止执行。
该功能简化了以前在执行本机命令后必须检查 $LASTEXITCODE 的脚本,或将其包装在辅助函数中的复杂步骤。有关 PowerShell 7.3 的详细信息可在微软博客中查阅,下一个版本 PowerShell 7.4 将是下一个 LTS 版本,预计明年将在 .NET 8 上构建。
最新版本:7.4
v7.4.1 现已于2024年1月中旬发布,更新内容如下:
修复使用 interpolated strings 的 Group-Object 输出
修复 Start-Process -PassThru 以确保返回的 Process 对象可以访问 ExitCode 属性
修复 DisplayRoot 网络 PSDrive 的渲染
确保 logging WDAC ETW events 时确保文件名不为空
修复 WDAC audit logging feature 引入的四个回归
将 .NET 8 升级到版本 8.0.101
更新 v7.4.1 的 .NET SDK 和依赖项
更新包依赖项与修复 tab completion tests
在 runtimeconfig.json 中设置 rollForwardOnNoCandidateFx,使其仅在次要版本和补丁版本上前滚
删除发布到 packages.microsoft.com 的 RHEL7,因为它不再受支持
v7.4.7 LTS 将 .NET SDK 升级至 8.0.405
[release/v7.4] 更新发布分支,设置为传递性:true(次要更新)
[release/v7.4] 修复回迁错误
修复 Container Linux CI 中种子值的最大限制问题
添加仅允许使用 NuGet 提供源的功能
将Microsoft.PowerShell.PSResourceGet更新至1.0.6
因池变更调整路径配置
更新池以支持 “Publish BuildInfo” 任务
添加缺失的回迁和新修复功能
移植 Blob 复制功能相关的变更
更新防火墙以支持监控功能
修复 release-MakeBlobPublic.yml 文件中的拼写错误
更新 7.4.6 的变更日志并添加发布信息
修复发布管道中的回迁问题
删除重复参数
[release/v7.4] 确保AssemblyVersion对于 7.4.7 及以上维护性版本保持一致
为 Windows CI 添加*.props文件并对路径过滤器进行排序调整
使用最新版本的 Windows 签名 NuGet 包
使用工作负载身份服务连接从存储帐户下载 makeappx 工具
更新 Windows CI 的路径过滤器
修复发布管道错误并切换至 KS3
添加在还原失败时捕获 MSBuild 二进制日志的功能
从包构建中下载包以生成 vpack
添加跳过验证包步骤的参数
修复 GitHub 发布时变更日志内容抓取问题
在发布 NuGet 阶段添加工具包下载功能
在 API 扫描(APIScan)构建过程中新增 CodeQL 扫描支持
更新 Deploy Box
7.4 不再支持 Windows 7,安装时会提示 "Supported only on Windows 8.1 and above"
最新版本:7.5
v7.5.0 改进了构建和打包改进
将 .NET SDK 升级至 9.0.102
在发布 NuGet 阶段添加工具包下载功能
修复在 GitHub 发布时抓取更新日志(Changelog)内容的问题
将版本构建标记为最新稳定版
[release/v7.5] 更新发布分支
将 Microsoft.PowerShell.PSResourceGet 更新至 1.1.0
确保维护性版本中 AssemblyVersion 保持不变
更新 Deploy Box(部署箱)
更新机器池,用于复制 Blob 和上传构建信息(buildinfo)阶段
更新 NuGet 发布管道以使用 Deploy Box
为 GitHub 发布和 NuGet 发布管道添加 Deploy Box 的产品配置路径
项目主页:https://github.com/PowerShell