欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell中使用Filter来创建管道输入函数

程序员文章站 2022-05-31 11:40:08
本文介绍在自定义powershell函数时,不使用function而使用filter。filter可以快速的创建一个管道输入函数,filter就相当于只有一个process...

本文介绍在自定义powershell函数时,不使用function而使用filter。filter可以快速的创建一个管道输入函数,filter就相当于只有一个process块的function。

filter关键词可以代替function关键词来创建函数。但filter创建的函数,只能是接收管道输入参数的参数,并且是接收块结构数据的输入。所以在filter定义的函数里面,你都看不到接收输入参数。

在filter定义的函数中,使用$_变量,来遍历所有的输入对象。

复制代码 代码如下:

filter test-applicationprogram
{
    if ($_.mainwindowtitle -ne '')
    {
        $_
    }
}

执行结果如下:
复制代码 代码如下:

ps> get-process | test-applicationprogram
handles npm(k) pm(k) ws(k) vm(m) cpu(s) id processname
------- ------ ----- ----- ----- ------ -- -----------
787 53 110040 102008 319 7,91 7600 chrome
……

上面函数的作用是检测窗口标题不为的进程,输入参数必须是process类型的变量。我们在演示的时候,使用了get-process来获取所有的进程,然后当参数传递给filter。

另外再说一句,filter创建的函数跟function创建的函数,在本质上是一样的。所以,上面的filter函数,与下面这段函数是一样的。

复制代码 代码如下:

function test-applicationprogram
{
    process
    {
        if ($_.mainwindowtitle -ne ‘')
        {
            $_
        }
    }
}

或者说,在powershell系统内部,filter创建的函数将被翻译成上面这段function存储在内存中。

关于powershell使用filter来快速创建管道输入函数,本文就介绍这么多,希望对您有所帮助,谢谢!