在PowerShell中filter关键字有什么作用?

时间:2019-06-04 15:05:37

标签: powershell

我使用filter命令遇到了一些Powershell代码。我从未见过此命令,但它的工作原理基本上是这样的:

enter image description here

它看起来像一个函数。如果运行Get-Command filter,我将返回The term 'filter' is not recognized as the name of a cmdlet, function, script file, or operable program.,而Get-Alias filter也返回类似的消息。 Get-Help filter只是返回Cmdlet和Functions,并在某处带有单词Filter。如果我用Google搜索“ Powershell过滤器命令”,那么我会得到很多关于带有-Filter参数和Where-Object语法的各种命令的信息。

此命令是什么,它的作用是什么?某处有文件吗?谢谢!

2 个答案:

答案 0 :(得分:4)

简而言之,过滤器是一种高级功能,只能使用过程块。基于此,可用于操纵(过滤,修改...)管道对象。他们还允许您e。 G。通过模块提供预定义的过滤器功能,可节省您编写复杂的Where-Objects脚本块100次的工作。 如果流水线对象满足某些条件,它还使您能够结束流水线处理,您只需要在过滤器内使用break关键字即可。

about functions

  

过滤器

     

过滤器是在管道中的每个对象上运行的一种函数。过滤器类似于一个函数,其所有语句都位于Process块中。   以下过滤器从管道中获取日志条目,然后显示整个条目或仅显示条目的消息部分:

 filter Get-ErrorLog ([switch]$message)
 {
   if ($message) { Out-Host -InputObject $_.Message }
   else { $_ }
 }

link提供了有关包含一些示例的很好的解释。

希望有帮助。

答案 1 :(得分:1)

我猜想它的名称是打算在管道中使用的。我认为它用的不是很多。

PS C:\users\js> Filter plusone { $_ + 1 }
PS C:\users\js> Echo 1 | plusone
2

PS C:\users\js> Filter comma { '{0:n0}' -f $_ }
PS C:\users\js> 1234567890 | comma
1,234,567,890