我正在查看我使用过的一段代码(来自another question)并且我无法弄清楚get
中的.
是什么{1}}代表此代码段(已删除评论):
.{process
我知道Get-ItemProperty $path |
.{process{ if ($_.DisplayName -and $_.UninstallString) { $_ } }} |
Select-Object DisplayName, Publisher, InstallDate, DisplayVersion, HelpLink, UninstallString |
Sort-Object DisplayName
是%
而For-EachObject
是?
或Where
的简写,但问题仍然存在:
什么是Where-Object
简写?
答案 0 :(得分:8)
.
是dot sourcing operator,它在当前范围内运行脚本,而不是像调用运算符(即&
)这样的新范围。
第二个段调用脚本块,并在该脚本块中定义高级功能。高级函数迭代管道中的每个项目并选择性地传递它。
这不是一个惯用的用法。通过使用Where-Object
(通常缩写为where
或?
),此脚本尝试实现的目标可以更简单,更易读的方式完成:
Get-ItemProperty $path | where { $_.DisplayName -and $_.UninstallString }
答案 1 :(得分:4)
.
是点源运算符。我从来没有看到它使用过这种方式,但它与在此上下文中使用&
(调用运算符)完全相同。