什么是PowerShell管道中的`.`简写?

vmr*_*rob 6 powershell

我找了一个代码块我使用(从采购的另一个问题),我一直没能找出什么..{process表示这个片段(评论删除):

Get-ItemProperty $path |
.{process{ if ($_.DisplayName -and $_.UninstallString) { $_ } }} |
Select-Object DisplayName, Publisher, InstallDate, DisplayVersion, HelpLink, UninstallString |
Sort-Object DisplayName
Run Code Online (Sandbox Code Playgroud)

我知道,%For-EachObject?是简写形式,WhereWhere-Object,但接下来的问题是:

什么是.速记?

Mik*_*ray 8

.点源操作符,它在当前作用域中运行脚本而不是像调用操作符(即&)那样的新作用域.

第二个段调用脚本块,并在该脚本块中定义高级功能.高级函数迭代管道中的每个项目并选择性地传递它.

这不是一个惯用的用法.这个脚本试图实现的目标可以通过使用Where-Object(通常缩写为where?)来以更简单,更易读的方式完成:

Get-ItemProperty $path | where { $_.DisplayName -and $_.UninstallString }
Run Code Online (Sandbox Code Playgroud)