0
我想知道如何使用谓词过滤器过滤集合$视图。我在C#中看到了很多关于谓词过滤器的例子,但PowerShell并没有多少例子。在PowerShell中看到一个有效的例子会很棒。PowerShell observablecollection谓词过滤器
基本上,当我将过滤器变量设置为字符串并刷新$ view时,集合应该过滤以向我显示与过滤器匹配的行或对象。如果过滤器为空,则应显示整个对象集合。
我认为这应该在控制台中工作,而不使用任何形式,但我还没有能够在PowerShell中创建类型(system.predicate)的过滤器。
$a = New-Object System.Collections.ObjectModel.ObservableCollection[object]
$svcs = gsv -ComputerName LocalHost |
select @{n="Server";e={$_.machinename}},Name,Displayname,status
$svcs | ForEach {
$a.Add((
New-Object PSObject -Property @{
Server = $_.server
Name = $_.name
Displayname = $_.displayname
Status = $_.status
}
))
}
$view = [System.Windows.Data.CollectionViewSource]::GetDefaultView($a)
$filter = "bits"
$view.Filter = "Predicate FIlter???"
$view.Refresh()
+1只是一个注释:scriptblock可以是'{$ args [0] -match $ filter}'为了简短。 –
@Robert - 真棒! .....我以前用匹配,包含等方式尝试过这样的东西,不知道为什么它以前没有工作,但是这个完成并且完美。谢谢 :) – Kiran