【问题标题】:What is the PowerShell "Filter" command type? [duplicate]什么是 PowerShell“过滤器”命令类型? [复制]
【发布时间】:2021-09-16 19:02:18
【问题描述】:

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

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

我可以通过CommandType 找到这个功能,而且只有这个功能。我以前从未见过。我还翻阅了 PowerShell 文档,我能找到的唯一(几乎)直接参考是从 FunctionInfo 派生的 FilterInfo 类。根据它的描述,我可以看到FilterInfo

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

但这就是它的结尾,并且与FunctionInfoFunction 的描述差不多。我能够找到其他一些对名称中带有 Filter 的类名的模糊引用,但是这些:

  • 都输入了string 并描述了函数(至少我找到的那些是)。
  • 已从最新版本的文档中删除了一些内容,但已针对 5.1 进行了记录。
  • 它们看起来像 C++ 文档,而不是 C# 或 VB.NET,尽管它们是 PowerShell SDK 文档的一部分。
    • 我知道 C++/CLI 是什么,但通常.NET 结构上的 C++ 示例不如 C# 或 VB.NET 常见,处理 PowerShell 的文档更不常见。

什么是Filter 命令?根据我到目前为止的发现,这似乎是一些用于创建过滤器的新结构,以代替尚未记录的基于字符串的过滤,但这些也是程序类型,我绝对找不到关于什么的信息PowerShell 中的过滤器意味着作为可执行结构。我能找到的最接近的东西是Input Filter Parameters 文档,它仍然只解释了基于字符串 的过滤,它引用的@​​987654324@ 再次用于使用通配符在cmdlet 上实现基于字符串的过滤参数。

【问题讨论】:

  • 那……太尴尬了。是的,它看起来像我的问题的答案。在我的辩护中,docs.microsoft.com/en-us/search/… 不会因此产生该页面,其他命令类型(嗯,我知道的)也没有记录在“功能”页面下。如果您将其发布为答案,我会接受。谢谢
  • 没有理由尴尬。它非常隐蔽和简洁。你的问题更长。 =D 它似乎也没有像你提到的那样被广泛使用。
  • 确实如此。奇怪的是,它没有出现在现有问题列表中,或者当我在询问之前搜索 SO 时。我想正如你提到的那样,它的使用并不广泛。甚至 google/bing 也在使用 functions 返回有关过滤器的内容并实施 begin / process / end

标签: powershell powershell-core


【解决方案1】:

来自about_Functions > Filters

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

它基本上是一个类似于函数的简单构造,无需所有高级函数设置即可对管道输入进行操作

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

dir | TodaysFiles

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2021-12-19
    • 1970-01-01
    • 2016-05-29
    • 2020-01-21
    • 2011-11-12
    • 1970-01-01
    • 2019-08-10
    • 2014-06-26
    相关资源
    最近更新 更多