[玩转系统] 使用 PowerShell 中的实验性功能
作者:精品下载站 日期:2024-12-14 03:01:32 浏览:13 分类:玩电脑
使用 PowerShell 中的实验性功能
PowerShell 中的实验功能支持提供了一种实验功能与 PowerShell 或 PowerShell 模块中现有稳定功能共存的机制。
实验性功能是指设计尚未最终确定的功能。该功能可供用户测试并提供反馈。一旦实验性功能最终确定,设计变更就会成为重大变更。
警告
实验性功能不打算在生产中使用,因为更改可能会造成破坏。实验性功能不受官方支持。但是,我们感谢任何反馈和错误报告。您可以在 GitHub 源存储库中提交问题。
有关启用或禁用这些功能的更多信息,请参阅 about_Experimental_Features。
实验性功能生命周期
Get-ExperimentalFeature cmdlet 返回 PowerShell 可用的所有实验性功能。实验性功能可以来自模块或 PowerShell 引擎。基于模块的实验性功能仅在导入模块后才可用。在以下示例中,未加载 PSDesiredStateConfiguration,因此 PSDesiredStateConfiguration.InvokeDscResource
功能不可用。
Get-ExperimentalFeature
Name Enabled Source Description
---- ------- ------ -----------
PSCommandNotFoundSuggestion False PSEngine Recommend potential commands based on fuzzy searc…
PSCommandWithArgs False PSEngine Enable `-CommandWithArgs` parameter for pwsh
PSFeedbackProvider True PSEngine Replace the hard-coded suggestion framework with …
PSLoadAssemblyFromNativeCode False PSEngine Expose an API to allow assembly loading from nati…
PSModuleAutoLoadSkipOfflineFiles True PSEngine Module discovery will skip over files that are ma…
PSSubsystemPluginModel True PSEngine A plugin model for registering and un-registering…
使用Enable-ExperimentalFeature 和Disable-ExperimentalFeature cmdlet 启用或禁用功能。您必须启动新的 PowerShell 会话才能使此更改生效。运行以下命令以启用 PSCommandNotFoundSuggestion
功能:
Enable-ExperimentalFeature PSCommandNotFoundSuggestion
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.
当实验性功能成为主流时,它就不再作为实验性功能提供,因为该功能现在是 PowerShell 引擎或模块的一部分。例如,PSAnsiRenderingFileInfo
功能在 PowerShell 7.3 中成为主流。您会自动获得该功能的功能。
笔记
某些功能具有配置要求,例如必须设置首选项变量才能从功能中获得所需的结果。
当实验性功能停止时,该功能在 PowerShell 中不再可用。例如,PSNativePSPathResolution
功能在 PowerShell 7.3 中已停用。
可用功能
本文介绍了可用的实验性功能以及如何使用该功能。
传说:
此图标表示实验性功能在 PowerShell 版本中可用:
此图标指示实验性功能成为主流的 PowerShell 版本:
此图标表示删除了实验性功能的 PowerShell 版本:
PSAnsi渲染文件信息
笔记
此功能在 PowerShell 7.3 中成为主流。
PowerShell 7.2 中添加了 ANSI 格式化功能。此功能添加 $PSStyle.FileInfo
成员并启用特定文件类型的着色。
$PSStyle.FileInfo.Directory
- 用于指定目录颜色的内置成员$PSStyle.FileInfo.SymbolicLink
- 用于指定符号链接颜色的内置成员$PSStyle.FileInfo.Executable
- 用于指定可执行文件颜色的内置成员。$PSStyle.FileInfo.Extension
- 使用此成员定义不同文件扩展名的颜色。 扩展成员预先包含存档和 PowerShell 文件的扩展。
有关详细信息,请参阅 about_Automatic_Variables。
PS命令未找到建议
在 CommandNotFoundException 后基于模糊匹配搜索推荐潜在命令。
PS> get
get: The term 'get' isn't recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify
that the path is correct and try again.
Suggestion [4,General]: The most similar commands are: set, del, ft, gal, gbp, gc, gci,
gcm, gdr, gcs.
带参数的 PS 命令
此功能为 pwsh
启用 -CommandWithArgs
参数。此参数允许您使用参数执行 PowerShell 命令。与 -Command
不同,此参数填充可由命令使用的 $args
内置变量。
第一个字符串是命令,后续由空格分隔的字符串是参数。
例如:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
此示例产生以下输出:
arg: arg1
arg: arg2
此功能已在 PowerShell 7.4-preview.2 中添加。
PSDesiredStateConfiguration.InvokeDscResource
允许在非 Windows 系统上编译为 MOF,并允许在没有 LCM 的情况下使用 Invoke-DSCResource
。
从 PowerShell 7.2 开始,PSDesiredStateConfiguration 模块已被删除,并且默认情况下禁用此功能。要启用此功能,您必须从 PowerShell 库安装 PSDesiredStateConfiguration v2.0.5 模块并启用该功能。
DSC v3 没有此实验性功能。 DSC v3 仅支持 Invoke-DSCResource
,不使用也不支持 MOF 编译。有关详细信息,请参阅 PowerShell 所需状态配置 v3。
PS反馈提供者
启用此功能后,PowerShell 将使用新的反馈提供程序在找不到命令时向您提供反馈。反馈提供程序是可扩展的,可以由第三方模块实现。其他子系统(例如预测器子系统)可以使用反馈提供程序来提供预测 IntelliSense 结果。
此功能包括两个内置反馈提供程序:
GeneralCommandErrorFeedback 提供与现有的建议功能相同的功能
UnixCommandNotFound,在 Linux 上可用,提供类似于 bash 的反馈。
UnixCommandNotFound 既充当反馈提供者又充当预测器。 command-not-found 命令的建议既用于在交互式运行中找不到命令时提供反馈,又用于为下一个命令行提供预测性 IntelliSense 结果。
此功能已在 PowerShell 7.4-preview.3 中添加。
PSLoadAssemblyFromNativeCode
公开 API 以允许从本机代码加载程序集。
PSModuleAutoLoadSkipOfflineFiles
启用此功能后,如果用户的 PSModulePath 包含来自云提供商(例如 OneDrive)的文件夹,PowerShell 将不再触发下载该文件夹中包含的所有文件。任何标记为未下载的文件都会被跳过。使用云提供商在计算机之间同步其模块的用户应将模块文件夹标记为固定或 OneDrive 以外的提供商的同等状态。将模块文件夹标记为固定可确保文件始终保留在磁盘上。
此功能已在 PowerShell 7.4-preview.1 中添加。
PSNativeCommand参数传递
笔记
此功能在 PowerShell 7.3 中成为主流。
启用此实验性功能后,PowerShell 使用 StartProcessInfo
对象的 ArgumentList
属性,而不是我们当前在调用本机可执行文件时重建字符串的机制。
警告
新行为是对当前行为的重大改变。这可能会破坏调用本机应用程序时解决各种问题的脚本和自动化。从历史上看,引号必须被转义,并且不可能向本机应用程序提供空参数。使用停止解析标记 (--%
) 或 Start-Process
cmdlet 在需要时回避本机参数传递。
此功能添加了一个新的 $PSNativeCommandArgumentPassing
首选项变量来控制此行为。该变量允许您选择运行时的行为。有效值为 Legacy
、Standard
和 Windows
。默认行为是特定于平台的。在 Windows 平台上,默认设置为 Windows
,非 Windows 平台默认为 Standard
。
Legacy
是历史行为。 Windows
和 Standard
模式的行为相同,只是在 Windows
模式下,以下文件的调用会自动使用 Legacy
风格参数传递。
cmd.exe
find.exe
cscript.exe
wscript.exe
sqlcmd.exe
- PowerShell 7.3.1 中添加.bat
结尾.cmd
结尾.js
结尾.vbs
结尾.wsf
结尾如果 $PSNativeCommandArgumentPassing
设置为 Legacy
或 Standard
,则解析器不会检查这些文件。
默认行为是特定于平台的。在 Windows 平台上,默认设置为 Windows
,非 Windows 平台为 Standard
。
笔记
以下示例使用 TestExe.exe
工具。您可以从源代码构建TestExe
。请参阅 PowerShell 源存储库中的 TestExe。
此更改带来的新行为:
带有嵌入引号的文字或可扩展字符串将保留引号:
PS> $a = 'a" "b' PS> TestExe -echoargs $a 'c" "d' e" "f Arg 0 is <a" "b> Arg 1 is <c" "d> Arg 2 is <e f>
保留空字符串作为参数:
PS> TestExe -echoargs '' a b '' Arg 0 is <> Arg 1 is <a> Arg 2 is <b> Arg 3 is <>
有关新行为的更多示例,请参阅 about_Parsing。
PowerShell 7.3 还添加了跟踪本机命令参数绑定的功能。有关详细信息,请参阅跟踪命令。
PSNativeCommandErrorActionPreference
笔记
此功能在 PowerShell 7.4 中成为主流。
本机命令通常向调用应用程序返回退出代码,该退出代码为零表示成功,非零表示失败。但是,本机命令当前不参与 PowerShell 错误流。重定向的 stderr 输出的解释方式与 PowerShell 错误流不同。许多本机命令使用 stderr 作为信息或详细流,因此只有退出代码很重要。在脚本中使用本机命令的用户需要在每次调用后检查退出状态,类似于以下示例:
if ($LASTEXITCODE -ne 0) {
throw "Command failed. See above errors for details"
}
但是,此示例并不支持 $?
因 cmdlet 或函数错误而可能为 false 的所有情况,从而导致 $LASTEXITCODE
过时。
此功能实现了 $PSNativeCommandUseErrorActionPreference
首选项变量,该变量控制 PowerShell 中处理本机命令错误的方式。这允许本机命令失败生成错误对象,这些对象会添加到 PowerShell 错误流中,并且可能会终止脚本的执行,而无需额外处理。
$PSNativeCommandUseErrorActionPreference
默认设置为 $false
。将首选项设置为 $true
后,您将获得以下行为:
- 当
$ErrorActionPreference='Stop'
时,脚本将在本机命令返回非零退出代码时中断。 - 当
$ErrorActionPreference='Continue'
(默认值)时,您将看到本机命令错误的 PowerShell 错误消息,但脚本不会中断。
PSNativePSPathResolution
笔记
此实验性功能已在 PowerShell 7.3 中删除,不再受支持。
如果使用文件系统提供程序的 PSDrive 路径传递给本机命令,则解析的文件路径将传递给本机命令。这意味着像 code temp:/test.txt
这样的命令现在可以按预期工作。
此外,在 Windows 上,如果路径以 ~
开头,则会解析为完整路径并传递给本机命令。在这两种情况下,路径都会标准化为相关操作系统的目录分隔符。
- 如果路径不是 PSDrive 或
~
(在 Windows 上),则不会发生路径规范化 - 如果路径用单引号引起来,那么它不会被解析并被视为文字
PS子系统插件模型
此功能在 PowerShell 中启用子系统插件模型。该功能使得可以将 System.Management.Automation.dll 的组件分离到驻留在其自己的程序集中的各个子系统中。这种分离减少了核心 PowerShell 引擎的磁盘占用空间,并允许这些组件成为最小化 PowerShell 安装的可选功能。
目前,仅支持 CommandPredictor 子系统。该子系统与 PSReadLine 模块一起使用来提供自定义预测插件。将来,Job、CommandCompleter、Remoting 和其他组件可能会被分成 System.Management.Automation.dll 之外的子系统程序集
。
该实验性功能包括一个新的 cmdlet Get-PSSubsystem。仅当启用该功能时,此 cmdlet 才可用。此 cmdlet 返回有关系统上可用的子系统的信息。
PSNativeWindows波浪号扩展
启用此功能后,PowerShell 在调用本机命令之前会将不带引号的波形符 (~
) 展开到用户当前的主文件夹。以下示例展示了该功能的工作原理。
禁用该功能后,波形符将作为文字字符串传递给本机命令。
PS> cmd.exe /c echo ~
~
启用该功能后,PowerShell 会在将波形符传递给本机命令之前扩展波形符。
PS> cmd.exe /c echo ~
C:\Users\username
此功能仅适用于 Windows。在非 Windows 平台上,波形符扩展是本机处理的。
此功能已在 PowerShell 7.5-preview.2 中添加。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag