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来快速创建管道输入函数,本文就介绍这么多,希望对您有所帮助,谢谢!