热门排行
简介
Windows PowerShell 7.x是Windows和Windows Server的自动化平台和脚本语言,具有命令行界面,可为IT专业人员提供更多配置微软Windows系列操作系统的机会,是一种通用的管理工具,可让用户简化对系统的管理。与其他基于文本的外壳程序不同,PowerShell利用.NET Framework的功能,可提供丰富的对象和大量内置功能来控制Windows环境。
近日,微软发布了PowerShell 7,这是其跨平台PowerShell核心自动化工具和配置框架的最新版本。这次更新带来了一些重大的变化、新的功能和改进的向后兼容性。展望未来,PowerShell 7将成为“一个真正的PowerShell”,以取代之前Windows PowerShell和PowerShell核心之间的分层。
此版本中最大的更改之一是从.NET Core 2.x升级到了3.1版。微软在发布该版本的博客文章中说:“.NET Core 3.1带来了许多.NET Framework API,从而使它们与现有Windows PowerShell模块的向后兼容性大大提高。” “这包括Windows上许多需要GUI功能的模块,例如Out-GridView和Show-Command,以及Windows中附带的许多角色管理模块。”
PowerShell安装目录改变
在安装PowerShell 7时,它将安装到新目录中,并与PowerShell 5.1一起运行。如果要从PowerShell Core 6.x升级,将覆盖PowerShell 6目录,并删除所有不必要的文件。以下是安装目录列表:
将PowerShell 7安装到%programfiles%PowerShell7目录
%programfiles%PowerShell7 文件夹已添加到 $env:PATH
PowerShell 7安装程序包将升级PowerShell Core 6.x的早期版本:
Windows:%programfiles%PowerShell6 替换为 %programfiles%PowerShell7
Linux: /opt/microsoft/powershell/6替换为 /opt/microsoft/powershell/7
macOS: /usr/local/microsoft/powershell/6 替换为 /usr/local/microsoft/powershell/7
PowerShell 7中的新功能
管道并行化新的运算符ConciseView和Get-Error cmdlet自动新版本通知直接从PowerShell 7调用DSC资源兼容层在测试实际代码之前,请务必确保检查“环境变量”。
1、管道并行化
现在,使用ForEach-Object-Parallel时,可以并行执行或处理对象,而不是使用sequence方法。此方法可以在不到10秒的时间内卸下三个WIM映像,而不是按顺序运行时的近25秒。下面是它的示例代码:
Get-WindowsImage -Mounted | foreach -Parallel {Measure-Command {Dismount-WindowsImage -Discard -Path $_.Path}}
2、新运算符
有三个新的三元运算符:a?b:c,管道链运算符;||和&&和Null条件运算符;??和??=。 它们的作用类似于一个简化的if-else语句,利用它们可以使编写代码变得容易,而不是一直使用If-else循环。
3、ConciseView和Get-Error cmdlet
ConciseView是一个用户可选择的视图,它是PowerShell 7的默认视图。如果错误不是来自脚本,将收到一个单行错误。如果来自脚本或存在解析错误,将收到一条多行错误消息以及一个指针,显示错误发生在哪一行。
然后有一个新的cmdlet Get Error,可以帮助用户在需要时获得错误的详细视图。它可以显示最后发生的错误的完整详细信息,包括内部异常。
$Error | Get-Error
Get-Error -Newest 3 # Displays the last three errors that occurred in the session
4、自动新版本通知
从PowerShell 7开始,系统将每天检查一次更新,如果有新版本,系统将通知用户。此信息仅在后续会话开始时显示。
PowerShell更新有三个标志:
Default:GA、预览和RC版本
Off:关闭更新通知功能
LTS:只通知长期服务(LTS)GA版本的更新
如果要在PowerShell 7中关闭更新通知,请在PowerShell窗口中执行以下命令:
$Env:POWERSHELL_UPDATECHECK = 'Off'
5、直接从PowerShell 7调用DSC资源
Invoke-DscResource cmdlet运行指定的PowerShell所需状态配置(DSC)资源的方法,这是一个实验功能。
使用此cmdlet,配置管理产品可以通过使用DSC资源来管理Windows或Linux。当DSC引擎在启用调试的情况下运行时,此cmdlet还可启用资源调试。
6、兼容层
它允许PowerShell用户在隐式Windows PowerShell会话中导入模块。使用此功能,用户能够在远程计算机上将真实命令作为会话使用,并将结果返回到本地会话。现在它支持导入模块,用户可以在远程计算机上运行这些模块。
PowerShell 7是跨平台的,它支持Windows,macOS和各种Linux版本,PowerShell是Linux和macOS上都可用的开源软件。很高兴在PowerShell 7中看到如此多的新功能,希望微软加大开发力度,开发出功能更强大的版本。
使用说明
1、PowerShell中最重要的命令可能是Get-Help,它使您可以快速学习PowerShell,而不必在Internet上进行搜索。
该Get-Helpcmdlet还显示了PowerShell命令如何与示例一起使用。
它显示了Get-Processcmdlet 的语法和其他技术信息。
PS /> Get-Help -Name Get-Process
它显示了如何使用Get-Processcmdlet 的示例。
PS />Get-Help -Name Get-Process -Examples
如果使用-Full参数(例如)Get-Help -Name Get-Process -Full,它将显示更多技术信息。
2、发现系统上可用的命令
您想发现系统上可用的PowerShell cmdlet吗?只需Get-Command如下运行:
PS /> Get-Command
如果您想知道系统上是否存在特定的cmdlet,可以执行以下操作:
PS /> Get-Command Get-Process
如果您想了解Get-Processcmdlet 的语法,请键入:
PS /> Get-Command Get-Process -Syntax
如果您想知道如何使用Get-Process,请输入:
PS /> Get-Help Get-Process -Example
3、PowerShell管道 |
有时,当您运行Get-ChildItem或“ dir”时,您希望以降序获取文件和文件夹的列表。为此,请键入:
PS /home/jen> dir | Sort-Object -Descending
假设您要获取目录中最大的文件
更新日志
PowerShell 7.4.6–2024-10-22
构建和包装改进
碰撞。NET SDK升级到8.0.403
复制到静态站点,而不是将blob公开(#24269)(#24473)
添加在还原失败时捕获MSBuild二进制日志的功能(#24128)
在对roff文件进行gzip压缩时保留它。(#24450)
更新PowerShell-Coordinated_Packages-Official.yml(#24449)
为不同的环境更新和添加新的NuGet包源。(#24440)
为Debian 12(书籍蠕虫)添加PMC映射(#24413)
Azure公共订阅源使用修复(#24429)
删除资产/AppImageThirdPartyNotices.txt(#24256)
删除演示目录(#24258)
在tsaconfig中为问题添加特定路径(#24244)
签入生成的手册页(#24423)
为Debian软件包添加更新的libicu依赖项(#24301)
将映射添加到azure linux存储库(#24290)
更新vpack管道(#24281)
将BaseUrl添加到buildinfo json文件中(#24376)
如果msix blob已经存在,请删除它(#24353)
在托管池中运行一些发布测试(#24270)
创建新的合规管道(#24252)
使用托管身份进行APIScan身份验证(#24243)
默认情况下,在vPack构建中选中“创建并提交”(#24181)
更好地捕捉环境(#24148)
重构Nuget包源代码创建以使用New NugetPackageSource函数(#24104)
将Microsoft提要设置为默认值(#24426)
撞到。NET 8.0.403和更新依赖项(#24405)