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

时间:2015-06-15 21:49:39

标签: powershell

我正在查看我使用过的一段代码(来自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简写?

2 个答案:

答案 0 :(得分:8)

.dot sourcing operator,它在当前范围内运行脚本,而不是像调用运算符(即&)这样的新范围。

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

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

Get-ItemProperty $path | where { $_.DisplayName -and $_.UninstallString }

答案 1 :(得分:4)

.是点源运算符。我从来没有看到它使用过这种方式,但它与在此上下文中使用&(调用运算符)完全相同。