2013-03-20 63 views
0

對於最後幾小時,我試圖弄清楚如何將scriptblock傳遞給函數以用作哪裏對象的過濾器。我還沒有找到任何文件,我一定錯過了一些東西。我在What is the recommended coding style for PowerShell?中看到了「過濾腳本:」和「函數:腳本」的定義,但我不知道如何使用它們,我無法在任何地方找到它。如何將自定義過濾器函數傳遞給Where對象

function Test 
{ 
    Param(
      $f,  
      $What 
    ) 

    $x = $What | where $f 
    $x 
} 

$mywhat = @('aaa', 'b', 'abb', 'bac') 
filter script:myfilter {$_ -like 'a*'} 
Test -What $mywhat -xx $myfilter 

有人能請我指出正確的方向嗎?

回答

2

目前還不清楚你在這裏要求什麼。

過濾器是一個功能,而不是一個腳本塊。 where-object將腳本塊作爲輸入。如果要使用參數指定函數內的where條件,可以使用scriptblock參數。

function Test 
{ 
    Param(
      [scriptblock]$f,  
      $What 
    ) 

    $x = $What | where $f 
    $x 
} 

$myfilter = {$_ -like 'a*'} 
Test -What $mywhat -f $myfilter 

#or combine them 
Test -What $mywhat -f {$_ -like 'a*'} 

如果你只是想使用過濾器,那麼這是如何做到這一點:

filter script:myfilter { if($_ -like 'a*') { $_ }} 

$mywhat | myfilter 

這將是等於$mywhat | where {$_ -like 'a*'}

+0

感謝Graimer!這就是我一直在尋找的東西,我相信我在一開始就嘗試過這種方式 - 必須仍然有錯誤。 – JankoHrasko 2013-03-21 00:24:59

相關問題