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

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

时间: 2024-09-23 06:36:29

PowerShell中使用Filter来创建管道输入函数_PowerShell的相关文章

PowerShell中常用的一些特殊运算符介绍_PowerShell

&,调用运算符. 语法:& <可执行文件路径> [<参数列表>] 举例: 复制代码 代码如下: $execPath="D:\Progra~1\FlashFXP\flashfxp.exe" $execArgs="-upload ftp://u:p@ip:21 " $execArgs=$execArgs+"-remotepath=`"/`" " $execArgs=$execArgs+&qu

PowerShell中文件对象的属性方法总结_PowerShell

本文介绍一个PowerShell中文件对象有哪些属性,知道了这些属性对于我们更好的对文件进行操作是非常重要的. PowerShell是一个面向对象的脚本语言,在PowerShell中,所有的都是对象,文件也是对象.既然是对象,那肯定有属性.PowerShell中的文件对象,其实就是.NET中的System.IO.FileInfo类的实例.我们要查看完整的PowerShell文件对象的属性,其实不需要去翻MSDN,然后把System.IO.FileInfo类的属性找出来,那样太麻烦了,而且貌似在P

PowerShell中对函数参数的命名建议_PowerShell

PowerShell自定义函数的参数没有具体的命名规则,那么怎么做才能让参数的命名更加科学可持续. 我们应该怎么来命名函数的参数名称呢?有没有一个可供参考的列表?当然微软没有给出来.但是我们可以来理一个列表出来.微软自带了大量的cmdlet,这些cmdlet使用的参数有什么规律呢?我们用下面一段命令来统计一下. 复制代码 代码如下: Get-Command -CommandType Cmdlet | ForEach-Object { $_.Parameters } | ForEach-Objec

PowerShell中使用return语句退出函数例子_PowerShell

本文介绍在自定义PowerShell函数时,可以使用return语句来退出函数,同时return语句也可以返回值给函数的调用者. 使用return语句来直接退出函数.看一个退出函数的例子: 复制代码 代码如下: function Get-NamedProcess {     param     ($name=$null)     if ($name -eq $null)     {         Write-Host -ForegroundColor Red 'Specify a name!'

PowerShell中的TimeSpan时间差对象使用实例_PowerShell

TimeSpan对象表示一个时间差,比如今天的10点10分,和明天的12点12分,就差1天2小时2分.这个"1天2小时2分"就是一个TimeSpan.这个东西有什么用呢?小编之前在做一个小东西的时候,需要评估一下两个不同的方法看哪个效率更高.于是小编在程序开始的时候,设置一个起始时间,在程序结束的时候再设置一个结束时间,然后两个时间一相减,得到一个时间差,洪哥以时间差小者为优. 下面是几个使用TimeSpan对象的例子: 创建一个TimeSpan对象,表示1天3小时 复制代码 代码如下

Powershell中调用邮件客户端发送邮件的例子_PowerShell

你可以使用Send-MailMessage发送邮件,但是你想从你默认MAPI客户端准备发送一份邮件,这也不是很麻烦: 复制代码 代码如下: $subject = 'Sending via MAPI client'$body = 'My Message'$to = 'tobias@powertheshell.com' $mail = "mailto:$to&subject=$subject&body=$body" Start-Process -FilePath $mail

PowerShell中终止管道的方法

  这篇文章主要介绍了PowerShell中终止管道的方法,本文直接给出代码实例,需要的朋友可以参考下 如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间. 下面的例子会从Windows文件夹下搜寻 explorer.exe示例,因为Select-Object语句可以在管道找到结果的那一瞬终止管道.否则,Get-ChildItem会递归的遍历所有子目录然后匹配出你想要的结果. 代码如下: #requires -Version

使用管道符在PowerShell中进行各种数据操作

最近在培训PowerShell,在讲到Pipeline的时候,对于我这种长期和数据(数据库)打交道的人来说,觉得很实用,所以写此博文,记录一下. 无论是在Linux中写Bash脚本还是在Window上写PowerShell,管道符"|"是一个非常有用的工具.它提供了将前一个命令的输出作为下一个命令的输入的功能.在数据处理中,我们也可以使用管道符对数据进行各种操作. Import&Export导入导出 先说导入导出是为了能够为接下来的数据处理准备数据.在PowerShell中我们

PowerShell中实现播放WAV音频文件_PowerShell

适用于所有PowerShell版本 其实在PowerShell中播放WAV文件非常简单: 复制代码 代码如下: # 在Windows 目录找到一个可用的WAV音频文件 $WAVPath = Get-ChildItem -Path $env:windir -Filter *.wav -Recurse -ErrorAction SilentlyContinue |  Select-Object -First 1 -ExpandProperty FullName    # 加载并播放 "Playing