조건부 필터를 사용하여 모음 $보기를 필터링하는 방법을 알고 싶습니다. 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}'가 될 수 있습니다. –
@ 로버트 - 굉장 !! ..... 나는 이전에 성냥과 같은 것을 시도 했었습니다. 포함하고 있습니다, 등등은 전에는 작동하지 않았던 이유를 모르지만이 하나는 완벽합니다. 고맙습니다 :) – Kiran