本文介紹在自定義PowerShell函數(shù)時,不使用Function而使用Filter。Filter可以快速的創(chuàng)建一個管道輸入函數(shù),F(xiàn)ilter就相當于只有一個Process塊的Function。
Filter關(guān)鍵詞可以代替Function關(guān)鍵詞來創(chuàng)建函數(shù)。但Filter創(chuàng)建的函數(shù),只能是接收管道輸入?yún)?shù)的參數(shù),并且是接收塊結(jié)構(gòu)數(shù)據(jù)的輸入。所以在Filter定義的函數(shù)里面,你都看不到接收輸入?yún)?shù)。
在Filter定義的函數(shù)中,使用$_變量,來遍歷所有的輸入對象。
復(fù)制代碼 代碼如下:
Filter Test-ApplicationProgram
{
if ($_.MainWindowTitle -ne '')
{
$_
}
}
執(zhí)行結(jié)果如下:
復(fù)制代碼 代碼如下:
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
……
上面函數(shù)的作用是檢測窗口標題不為的進程,輸入?yún)?shù)必須是Process類型的變量。我們在演示的時候,使用了Get-Process來獲取所有的進程,然后當參數(shù)傳遞給Filter。
另外再說一句,F(xiàn)ilter創(chuàng)建的函數(shù)跟Function創(chuàng)建的函數(shù),在本質(zhì)上是一樣的。所以,上面的Filter函數(shù),與下面這段函數(shù)是一樣的。
復(fù)制代碼 代碼如下:
Function Test-ApplicationProgram
{
process
{
if ($_.MainWindowTitle -ne ‘')
{
$_
}
}
}
或者說,在PowerShell系統(tǒng)內(nèi)部,F(xiàn)ilter創(chuàng)建的函數(shù)將被翻譯成上面這段Function存儲在內(nèi)存中。
關(guān)于PowerShell使用Filter來快速創(chuàng)建管道輸入函數(shù),本文就介紹這么多,希望對您有所幫助,謝謝!
您可能感興趣的文章:- PowerShell實現(xiàn)按條件終止管道的方法
- PowerShell中終止管道的方法
- PowerShell入門教程之PowerShell管道介紹
- Windows Powershell導(dǎo)出管道結(jié)果
- Windows Powershell分析和比較管道結(jié)果
- Windows Powershell過濾管道結(jié)果
- Windows Powershell排序和分組管道結(jié)果
- Windows Powershell使用管道
- Windows Powershell 管道和重定向
- PowerShell函數(shù)中接收管道參數(shù)實例
- PowerShell管道入門必看篇(管道例子大全)