PowerShell Core 6.2 版本侧重于性能提升、修复错误,以及提升质量的小型命令和语言增强。 想查看完整的改进列表,请访问我们在GitHub 上的详细更新日志 。
实验特性
之前,我们启用了对 实验性功能的支持。 在6.2版本中,我们有四个实验性功能可供试用。请提供反馈,以便我们改进并决定该功能是否值得推广为主流。
用来 Get-ExperimentalFeature 获取可用的实验性功能列表。 你可以用和 Enable-ExperimentalFeatureDisable-ExperimentalFeature来启用或禁用这些功能。
命令未找到建议
该功能利用模糊匹配来寻找你可能输入错误的命令或命令小工具的建议。
Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion
Example
在这个例子中,拼写错误的指令子(cmdlet)名称与从最可能到最不可能的多个建议进行了模糊匹配。
Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not 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.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.
隐式远程批处理
在管道中使用 隐式远程 时,PowerShell 会独立处理管道中的每个命令。 对象在流水线执行过程中会反复序列化,并在 de-serialized 客户端与远程系统之间进行。
通过此功能,PowerShell 分析流水线,判断命令是否安全可运行,且该命令是否存在于目标系统中。 如果成立,PowerShell 会远程执行整个流水线,只序列化并将 de-serializes 结果回传给客户端。
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching
在本地主机上进行的实际测试 Get-Process | Sort-Object 时间从10-15秒减少到20-30 毫秒。 该功能只需在客户端上启用即可。 服务器不需要更改。
临时驱动
Enable-ExperimentalFeature -Name PSTempDrive
如果你在不同作系统上使用 PowerShell Core,你会发现 Windows、macOS 和 Linux 上查找临时目录的环境变量是不同的! 通过这个功能,你会得到一个调用Temp:的PSDrive,它会自动映射到你所用作系统的临时文件夹。
Example
PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!
请注意,原生文件命令(比如 ls Linux上的)不支持PSDrives,也不会看到这个 Temp: 硬盘。
缩写扩展
PowerShell cmdlet 通常需要包含描述性名词。 这导致名字较长,更难打字。 这个功能让你只需输入命令小词的大写字符,然后用制表表补全查找匹配。
Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion
Example
PS> i-arsavsf
如果你按Tab键,并且安装了Azure PowerShell Az 模块,它会自动补全到:
PS> Import-AzRecoveryServicesAsrVaultSettingsFile
注释
此功能旨在交互式使用。 指令小工具的简化形式无法执行。 此功能不能替代别名。
重大更改
- 修复
-NoEnumerate行为Write-Output以符合Windows PowerShell。 (#9069) - 让
Join-String -InputObject 1,2,3结果等于1,2,3 | Join-String结果(#8611)(谢谢) @sethvs!) - 添加
-Stable及Sort-Object相关测试(#7862)(谢谢) @KirkMunro!) - 改进
Start-Sleepcmdlet 以支持分数秒(#8537)(谢谢) @Prototyyppi!) - 将哈希表改为使用 OrdinalIgnoreCase,使所有文化中都出现
case-insensitive(#8566) - 修复 LiteralPath
Import-Csv绑定输出Get-ChildItem(#8277)(谢谢) @iSazonov!) - 如果在
Import-Csv(#7899)中使用双引号分隔符,则不再跳过无名列(谢谢) @Topping!) -
Get-ExperimentalFeatureSwitch(#8318)已不再存在-ListAvailable - 调试参数现在设置为
$DebugPreference继续而非询问(#8195)(谢谢)@KirkMunro!) - 如果在非交互式、重定向、编码命令中使用pwsh(#8115)时指定,则为Honor
-OutputFormat - 在尝试从GAC加载前,先从模块基座路径加载组件(#8073)
- 从 Linux 预览包中移除 tilde (#8244)
- 在配置文件处理前的处理(
-WorkingDirectory#8079) - 不要在Unix上添加
PATHEXT环境变量(#7697)(谢谢) @iSazonov!)
已知问题
- 在Windows IOT ARM平台上远程访问模块加载时存在问题。 参见(#8053)
一般更新与修复
- 在大小写区分文件系统(#8128)中,启用大小写不区分标签的完成功能,适用于文件和文件夹
- 将PSVersionInfo.PSVersion和PSVersionInfo.PSEdition设置为公开(#8054)(谢谢) @KirkMunro!)
- 添加类型推断 in
$_/$PSItemcatch{ }blocks(#8020)(谢谢) @vexx32!) - 修正静态方法调用类型推理(#8018)(谢谢) @SeeminglyScience!)
- 为 、
Group-Object、 PSObject 和 Hashtable (#7231) 创建推断类型Select-Object(谢谢)@powercode!) - 支持带有类型
ByRef-like参数的调用方法(#7721) - 处理 Windows PowerShell 模块路径已经在环境的 PSModulePath (#7727) 中的情况
- 通过存储纯文本(#9199)启用
SecureString非Windows的cmdlet。 - 在导入带有securestring的clixml时,改进非Windows的错误信息(#7997)
- 将参数 ReplyTo 添加到
Send-MailMessage(#8727)(谢谢) @replicaJunction!) - 将过时消息添加到
Send-MailMessage(#9178) -
Restart-Computer当 WinRM 不存在时修复localhost(#9160) - 当PowerShell被托管时,会触发
Start-Job抛弃终止错误(#9128) - 为 ushort、uint、ulong 和 short 字面量添加 C# 风格的加速器和后缀(#7813)(谢谢) @vexx32!)
- 新增数字文字后缀——参见 about_Numeric_Literals (#7901)(谢谢) @vexx32!)
- 当SupportsShouldProcess 未设置为“true”时,正确报告影响水平(#8209)(谢谢) @vexx32!)
- 修复网页命令中的请求字符集问题(#8742)(谢谢) @markekraus!)
- 修复网页指令(#8679)中的预期
100-continue问题(谢谢) @markekraus!) - 修复网页命令(#7676)文件阻塞问题(谢谢) @Claustn!)
- 修复(#8694)中的
Invoke-RestMethod代码页解析问题(谢谢) @markekraus!) - Refactor
ConvertTo-Jsonto expose JsonObject.ConvertToJson as a public API (#8682) - 用 -Depth(#8199)添加可配置的最大深度
ConvertFrom-Json(谢谢) @louistio!) - 在cmdlet(#7775)中添加EscapeHandle参数
ConvertTo-Json(谢谢) @iSazonov!) - 加入
-CustomPipeNamepwsh和Enter-PSHostProcess(#8889) - 启用在Windows上创建相对符号链接,使用
New-Item(#8783) - 允许Windows开发者模式用户创建无升高的符号链接(#8534)
- 启用
Write-Information接受$null(#8774) - MAML帮助内容中的高级函数修复
Get-Help(#8353) - 修复
Get-Help仅声明一个参数(#8754)时 -Parameter PSTypeName的问题(谢谢) @pougetat!) - ScriptBlock 执行的令牌计算修复
Get-Help,用于评论帮助。 (#8238)(谢谢 @hubuk!) - 更改
Get-Helpcmdlet -Parameter 参数,使其接受字符串数组(#8454)(谢谢) @sethvs!) - 如果寻呼机的路径包含空格(#8571)(谢谢) @pougetat!)
- 在“帮助”功能中使用提示
less词,指导用户如何退出(#7998) - 在cmdlet(#8191)中添加支持枚举和字符类型
Format-Hex(谢谢) @iSazonov!) - 从 (#8178) 移除 ShouldProcess
Format-Hex - 给 cmdlet (#7877) 添加新的 Offset 和 Count 参数
Format-Hex并重构(谢谢) @iSazonov!) - 允许“name”作为“label”
ConvertTo-Html的别名键,允许“width”条目为整数(#8426)(谢谢) @mklement0!) - 让基于脚本块的计算属性在(#8427)中重新
ConvertTo-Html工作(谢谢) @mklement0!) - 添加从管道输入创建文本的 cmdlet
Join-String(#7660)(谢谢) @powercode!) - 修复
Join-Stringcmdlet FormatString 参数逻辑(#8449)(谢谢) @sethvs!) - 改
Clear-Host回使用和$RAWUI清除工作,而不是远程连接(#8609) - 改
Clear-Host为简单调用[console]::clear并移除Unix中的清晰别名(#8603) - 修复 LiteralPath
Import-Csv绑定输出Get-ChildItem(#8277)(谢谢) @iSazonov!) - 帮助功能不应该使用寻呼器来处理 AliasHelpInfo(#8552)
- 添加
-UseMinimalHeader以Start-Transcript最小化转录头(#8402)(谢谢) @lukexjeremy!) - 加法
Enable-ExperimentalFeature和Disable-ExperimentalFeature指令点(#8318) - 如果有 PSDiagnostics 的所有 cmdlet,请 logman.exe (#8366)
- 移除平台上
non-Windows的持久化参数New-PSDrive(#8291)(谢谢)@lukexjeremy!) - 添加支持(
cd +#7206)(谢谢) @bergmeister!) - 启用
Set-Location -LiteralPath名为 - 和 + 的文件夹(#8089) -
Test-Path当给定空值或$null路径值时返回$false(#8080)(感谢)@vexx32!) - 即使路径与任何提供者不匹配,也允许返回动态参数(#7957)
- 支持
Get-PSHostProcessInfo及Enter-PSHostProcessUnix 平台(#8232) - 减少指令符中的
Get-Content分配(#8103)(谢谢) @iSazonov!) - 在写作内容时启用
Add-Content与其他工具共享阅读权限(#8091) -
Get/Add-Content瞄准容器时的误差减少(#7823)(谢谢) @kvprasoon!) - 在cmdlet(#7702)中添加
-Name和-NoUserOverrides-ListAvailable参数(Get-Culture谢谢) @iSazonov!) - 为 编码 参数添加统一属性以完成。 (#7732)(谢谢 @ThreeFive-O!)
- 允许在 编码 参数(#7636)中输入数字ID和注册码页名称(谢谢) @iSazonov!)
- 用万能字符(#7398)修复
Rename-Item -Path(谢谢) @kwkam!) - 当存在
Start-Transcript和 文件时,使用空文件而不是删除(#8131)(谢谢) @paalbra!) - 用FileAccess.Read和FileShare.Read明确创建
Add-Type开源文件(#7915)(谢谢)@IISResetMe!) - 最新Windows修复(
Enter-PSSession -ContainerId#7883) - 确保 NestedModules 属性被
Test-ModuleManifest(#7859) 填充 - 给 -UFormat 加
%F箱(Get-Date#7630)(谢谢) @britishben!) -
Set-Service -Status Stopped修复有依赖的服务停止(#5525)(谢谢)@zhenggu!)