Private/ApplyFilter.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function ApplyFilter
{
    Param (
        [parameter()]
        [PSObject[]]$items,
        
        [parameter(Mandatory=$true)]
        [string]$prop,
        
        [string[]]$name
    )

    if (-not $name) { return $items }
            
    # apply property filter
    $filter = @()
    foreach($n in $name) { $filter += '$_.' + $prop + '-like "' + $n + '"' }

    $sb = [scriptblock]::create($filter -join ' -or ')
    return $items | ? $sb
}