PowerShell "Filter" 命令类型是什么?



今天在检查Get-Command的输出并列出Function:提供程序下面的项目时,我注意到一些有趣的事情。我没有看到这在任何加载的内置程序中使用,但我的第三方模块之一显示了一个有趣的CommandType,而不是预期的应用程序,,Cmdlet,或别名类型:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Filter          New-HashObject                                     3.3.2      Pscx

这是这个函数,只有这个函数,我可以找到这个CommandType。我以前从未见过它。我也翻遍了PowerShell文档,我能找到的唯一(几乎)直接的参考是FilterInfo类,它派生自FunctionInfo。根据它的描述,我可以看到FilterInfo:

提供关于存储在会话状态中的过滤器的信息。

但这是它的结束,和FunctionInfoFunction的描述一样。我能够找到一些其他模糊的引用类名与过滤器的名称,但这些:

  • 都是string类型和描述函数(至少我发现的是)。
  • 一些已经从最新版本的文档中删除,但在5.1中有记录。
  • 它们看起来像c++文档,而不是c#或VB。NET,尽管它是PowerShell SDK文档的一部分。
    • 我知道c++/CLI是什么,但是一般来说c++在。net结构上的例子比c#或VB更少见。

什么是Filter命令?根据我到目前为止所发现的,这似乎是一些用于创建过滤器的新结构,以代替基于字符串的过滤,但这些都是可编程类型,我绝对没有找到关于PowerShell中过滤器作为可执行结构的含义的信息。我能找到的最接近的东西是输入过滤器参数文档,它仍然只解释了字符串基于的过滤,它引用的支持通配符在Cmdlet参数中再次进入使用通配符在Cmdlet上实现基于字符串的过滤器参数。

From about_Functions>过滤器

过滤器是在管道中的每个对象上运行的一种函数。过滤器类似于一个函数,它的所有语句都在Process块中。

它基本上是一个简单的结构,类似于一个函数,它将对管道输入进行操作,而不需要所有高级函数设置

filter TodaysFiles{
if ($_.LastWriteTime -gt [datetime]::Today) {$_ | select length, fullname}
}
dir | TodaysFiles

相关内容

  • 没有找到相关文章

最新更新